1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn học phần kiến trúc máy tính Đề tài tính tổng chữ số của một số

16 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 1,62 MB

Nội dung

Đồng thời, bài báo cáo sẽ phân tích một chương trình mẫu, giúp người đọc hiểu rõ cách viết và chạy chương trình hợp ngữ trong môi trường mô phỏng.. Giới thiệu hợp ngữ Hợp ngữ hay Assembl

Trang 1

TRUONG DAI HQC GIAO THONG VAN TAI TP HO CHi MINH

KHOA CONG NGHE THONG TIN

- @[) -

a UNIVERSITY

OF TRANSPORT HOCHIMINH CITY

BAO CAO BAI TAP LON HỌC PHẢN: KIÊN TRÚC MÁY TÍNH

DE TAI: TINH TONG CHU SO CUA MOT SO

Giang viên hướng dẫn: Nguyễn Thanh Tien Sinh viên thực hiện: MSSV:

Bui Tién V¥ 051205007212 Dinh Quéc Dat 052205000317

Huynh Tuan Luong 052205000366 Ngô Minh Đức 051205001661

Võ Tran Ngọc Anh 049205010492 Nguyễn Hữu Nhất Duy 051205011574

TP Hỗ Chí Minh, 2024

Lớp:

CN2301C CN2301C CN2301C CN2301C CN2301C CN2301C CN2301C

Trang 2

LOI MO DAU

Lập trình hợp ngữ (Assembly) là công cụ quan trọng giúp lập trình viên hiểu sâu về cách máy tính hoạt động và tối ưu hóa hiệu suất phần mềm Bài báo cáo này nhằm giới thiệu hợp ngữ và cách sử dụng công cụ EMUS8086 để mô phỏng lập trình trên bộ vi xử ly 8086

Đồng thời, bài báo cáo sẽ phân tích một chương trình mẫu, giúp người đọc hiểu rõ cách viết và chạy chương trình hợp ngữ trong môi trường mô phỏng Qua đó, sinh viên sẽ có cái nhìn rõ nét hơn về việc lập trình ở cấp độ thấp, trang bị những kiến thức cần thiết đề phát triển các ứng dụng hiệu suất cao trong tương lai

Trang 3

MUC LUC

I CAI DAT VÀ CÁCH SỬ DỤNG EMU8086 (5° 5 ca ccscccscsesecsee 4

2 Các cài đặt công cụ 8086 EmuÌfOT 75 5 5 050 15555055550 Y1 9195 1 55m 4

3 Hướng dẫn sử dụng emu8086 << <s se se SetseEetsstsssxseseseecssrse 6

1 Phéin tich dé Dai scssssssssssesssessscsncsnecsscsascsnecenscaseesecsnesancenccsneeseenes 9

1 Cài đặt chương trÌn o o- 5 s s s 9 SH HT nH mm 900 0m91 11

Trang 4

I CAI DAT VA CACH SỬ DUNG EMU8086

1 Giới thiệu hợp ngữ

Hợp ngữ hay Assembly language là một loại ngôn ngữ lập trình bậc thấp gân gũi với ngôn ngữ máy (Machine language), được thiết kế đề chuyển đổi mã nguôn thành mã máy mà máy tính có thể hiểu và thực thí Nó cung cấp cách thức giao tiếp trực tiếp với phần cứng của máy tính, cho phép lập trình viên kiếm soát chỉ tiết các hoạt động của bộ

xử lý

Về mặt lịch sử, đã từng có một số lượng lớn các chương trình đã được viết hoàn toàn bằng hợp ngữ Trước khi xuất hiện ngôn ngữ C vào những năm 1270 và đầu thập niên 1980, các hệ điều hành độc quyên hầu như được viết bằng hợp ngữ Nhiều ú ứng dụng thương mại cũng được viết bằng hợp ngữ, bao gồm một khối lượng lớn các phần mềm cho máy tính lớn của IBM được các tập đoàn lớn viết Cuối cùng thì các ngôn ngữ khác

ra đời và đã thay thế hợp ngữ mặc dù còn nhiều tô chức vẫn giữ lại các kiến trúc ứng dụng kiểu hợp ngữ trong suốt thập niên 1980

Một số điểm chính về hợp ngữ:

- _ Là ngôn ngữ lập trình thế hệ đầu tiên

- _ Thực thi nhanh mang lại hiệu suất cao

- _ Cung cấp khả năng kiêm soát chỉ tiết về tài nguyên phần cứng

- _ Có cú pháp và cấu trúc phức tạp, khó đọc và sử dụng

- _ Được ứng dụng để lập trình hệ thống, viết driver thiết bị, và tối ưu hóa mã nguồn cho hiệu suất cao

2 Cách cài đặt công cụ 8086 Emulator

Đề lập trình hợp ngữ ta sẽ sử dụng công cụ 8086 Emulator (emu8086), đây là một

công cụ với dung lượng rất nhỏ cho nên việc cải đặt sẽ khá đễ dàng và nhanh chóng Hướng dẫn cài đặt:

Bước l: Truy cập vào đường link: Emu8086.rar - Google Drive để tải về 2 file exe va txt

Bước 2: Giải nén và chạy file emu8086v408r.exe dé khởi động trình cài đặt Nhân next

để tiếp tục

Trang 5

j Setup - emu8086 microprocessor emulator

trại Hit

Pade

Welcome to the emu8086 microprocessor emulator Setup

Wizard

This will install emu8086 microprocessor emulator on your

computer

Itis recommended that you close all other applications before continuing

Click Next to continue, or Cancel to exit Setup

iä Setup - emu8086 microprocessor emulator Information

Please read the following important information before continuing

When you are ready to continue with Setup, click Next

Itis required to close any running instances of emu8086 and all instances of any virtual devices!

Bước 3: Chọn đường dẫn đến thư mục cài đặt Nhắn next để tiếp tục

l Setup - emu8086 microprocessor emulator

Select Destination Location Where should i

<Back

= Setup will install

To continue, click Next If you would like to select a different folder click Browse

c:\emu8086

Atleast 10.4 MB of free disk space is required

<Back Cancel

Trang 6

Select Start Menu Folder Where should Setup place the program's shortcuts? Es‡

xã Setup will create the program's shortcuts in the following Start Menu folder

To continue click Next If you would like to select a different folder, click Browse

emu8086| Browse

Bước 4: Sau khi trình cài đặt thu thập đủ thông tin, nó hiện thông báo sẵn sảng cho việc

cai đặt và tong hop các thông tin đã thu thập được trong các bước trước Nhắn nút Install

để tiễn hành cài đặt chương trinh

8 Setup - emu8086 microprocessor emulator — x

Ready to Install Setup is now ready to begin installing emu8086 microprocessor emulator on your feos}

computer

Click Install to continue with the installation, or click Back if you want to review or change any

settings

Destination location c:\emu8086 Start Menu folder:

emu8086

< Back Install ij Cancel

Bước 5: Sau khi đã hoàn tất tải về, chạy chương trình emu8086, giao dién cho lần đầu đăng nhập sẽ yêu câu chúng ta nhập mã đăng ký Nhân Please Enter the Registration Key

đề đăng ký

Bước 6: Truy cập file Emu8086-408Serial.txt dé lay tài khoản và mật khâu đăng ký

- Sau khi đã hoàn tất đây đủ các bước trên, ta sẽ có một công cụ sẵn sảng dé bat dau vào lập trình hợp ngữ,

3 Hướng dẫn sử dụng emu8086

Chương trình cho phép ta sử đụng các chức năng chính sau:

6

Trang 7

+ Soan thao ma hop ngữ trên màn hình soạn thảo, dịch ra file exe hoặc file com và chạy

mô phỏng, debue trực tiếp

+ Trao cứu tập lệnh của bộ vi xử lý 8086 (Help>8086 Instruction Set)

+ Tra ctu bang ma ASCII (Muc ascii codes trén menu)

+ Thực hiện các phép toán và chuyến đổi giữa các hệ cơ số thông dụng (nhị phân, thập phân, thập lục phân) (Mục math trên menu)

- Chương trình của chúng ta thường có dạng COM hoặc EXE, ta chon | trong 2 và nhân

OK cửa số soạn thảo sẽ xuât hiện

( EXE template - advanced executable file header: relocation, checksum

( BIN template - pure binary file, allows all sorts of customizations (advanced) ( BOOT template - for creating floppy disk boot records (very advanced)

Thanh công cụ chuan

© cr0006 - szsenbler and microprocessor emus

2 1 8m

vơ optere hp - shơế

Vùng không gian soạn thảo của chương trình,

U

new open examples save compile emulate | calculator convertor options help about

7

Trang 8

- Với thanh công cu nay ta sẽ có:

+New: Tạo file mới

+ Save: Lưu trữ file

+ Compile: bién dich file

+ Emulate: bién dịch và thực hiện mô phỏng

- Giao điện chạy và gỡ lỗi sẽ hiện ra khi chúng ta nhân nút Emulate trên thanh công cụ của chương trình Với giao điện debug nảy, chúng ta có thê chạy cả chương trình hay chạy ở chế độ từng lệnh đề dò lỗi Chương trình cung cấp giao điện trực quan cho phép người lập trinh:

+ Theo dõi trực tiếp mã lệnh, địa chỉ và nội dung của các lệnh cũng như dữ liệu trone bộ

nhớ

+ Quan sát trực tiếp sự thay đối của các thanh ghi, các biến, dữ liệu trong ngăn xếp và các

cờ trong thanh phi cờ

I t 1g ev mi rtual devices virtual drive help

Load reload ep ba single step run step delay ms: 0 stack 58 ;khai bao =

OU “m" nấu DS, AR r thê dh 18,13, Tong cac c

XOR CX, CX

HOU CL (8080! h] nov ds, ax

OR AK, AK

4

+ 8798 scieen | source | teset | aux | vars | debug | stack | flags | «| 1|

- Chương trình mô phóng có 2 chế độ là chạy từng lệnh và chạy tất cả các lệnh:

+ Nếu muốn chạy từng lệnh nhắn phím Single step hoặc F8

+ Nếu muốn chạy tất cả các lệnh nhắn phím Run hoặc Shift + F8

- Tuỳ thuộc vào nội dung của chương trình yêu cầu chúng ta có thể xem nội dung của stack, flags

Ngoài ra chương trình có phần trợ giúp rất hữu ích (Mục help trên menu) Người dùng có thê tìm hiệu cách sử dụng chương trình, tra cứu tập lệnh của vi xử lý 8086 và các ngắt cơ bản cũng như các ví dụ sử dụng các lệnh này

Trang 9

II PHAN TICH DE BAI VA THUAT TOAN

1 Phan tich dé bai

Đê bài: Nhập vào một sô, tính tông các chữ sô của một sô

Nhập một chuỗi ký tự số.Đều là các _ | Chương trình sẽ in ra tổng các chữ sô mà

Mời bạn nhập số nguyên: 20232023 | Tông các chứ số là: 14

Hướng giải bài toán:

- Chương trình sẽ yêu cầu người dùng nhập vào một chuỗi kí tự số

- Sau đó, chương trình sẽ duyệt qua từng ký tự trong chuỗi để chuyền đôi ký tự từ dạng ASCII thành số nguyên rồi cộng tất cả chúng lại với nhau đề tính tông

- Cuối cùng, chương trình in ra tông các chữ số vừa tính được

Với đề bài trên chúng ta thực hiện các bước sau:

Bước l:

-Khỏi tạo bộ nhớ và khai báo kích thước của ngắn xếp

-Khai báo các biến trong phần data

Bước 2:Nhập một chuỗi ký tự số từ bàn phím

+Hién thị thông báo “moi ban nhap so nguyen”

+Cho phép nhập số từ bàn phím

Bước 3: Xử lý ký tự số vừa nhập và tính tổng

+Chuyền đôi ký tự số ASCII thành giá trị số bang cach trừ đi 30h

+Tĩính tổng các chữ số

Bước 4:Chuyên đổi tổng thành chuỗi

+Chia tổng cho 10

+Chuyên đôi phần dư thành ký tự số ASCII bằng cách cộng 30h và đây vào stack Bước 5:Hiễn thị thông báo “Tong cac chu so la”

Bước 6:Hiễn thị kết quả đã tính

+Lấy kí tự số từ stack và hiển thị ra màn hình

Trang 10

2 Thuật toán

Bắt đầu

Nhập số nguyên

V

CX <- 0,AX <- 0

SI <- chuỗi ký tự vừa nhập

CL <- số ký tự trong chuỗi

BL <- BL-30h

AX <- AX+BX

SI <-SI+1

CX < CX-1 NO ————

DX <- 0

AX < AX /10

AH < AH + 30h

DL <- AH

Day giá trị DX vào

>

stack

CX <-CX +1

AH <-0 INO

từ stack

Xuất ký tự từ

DX

10

Trang 11

HI CÀI ĐẶT VÀ GIẢI THÍCH CHƯƠNG TRÌNH

1 Cài đặt chương trình

; CHUONG TRINH DANG EXE

-model small

stack 100

data

so db 255, 0, 255 dup($)

tb1 db 'Moi ban nhap so nguyen: $'

tb2 db 10,13,'Tong cac chu so: $'

muoi db 10

„code

main proc

; 1 Tro thanh ghi ds vao doan data

mov ax, @data

mov ds, ax

; 2 Hien thi thong bao 'Nhap so:'

lea dx, tbl

mov ah, 9

int 21h

; 3 Nhap chuoi so vao bo dem

lea dx, so

mov ah, 0Ah

int 21h

; 4 Lay so luong ki tu da nhap

xOr CX, cx

lea sĩ, so + 2

mov cl, [so + 1]

; 5.Chuyen ki tu so thanh gia tri so va tinh tong luu vao stack

xOr ax, ax

Lap:

xor bx, bx

mov bl, [si]

sub bl, 30h

11

Trang 12

add ax, bx

inc si

loop Lap

36 Xu ly tong

xOr CX, cx

lapchia:

xor dx, dx

div muoi

add ah, 30h

mov dl, ah

push dx

inc cx

xor ah, ah

cmp ax, 0

Jne lapchia

37 Hien thi chuoi 'Tong cac chu so:'

lea dx, th2

mov ah, 9

int 21h

38 Hien thi ket qua tong da tinh

Hienthi:

pop dx

mov ah, 2

int 21h

loop Hienthi

39 Ket thua chuong trinh

moy ah, 4Ch

int 21h

main endp

end main

12

Trang 13

2 Giải thích chương trình

Sử dụng chương trình đạng exe

lệnh gói gọn trong mét đoạn, dữ liệu nam trong một đoạn

hang so sẽ được lưu trữ

- Byte dau tiên chứa 255 byte đề biểu thị độ dài tối đa của chuỗi nhập vào

- Byte thir hai la 0 biểu thị số lượng kí tự đã nhập

- 255 byte con lai chita $, str dụng để chứa các kí tự số được nhập sau này

so:" Ra man hinh

tb2 db 10,13, "Tong cac chu so: $' Khai báo chuỗi tb2 đề hiển thi thong bao "Tong

cac chu so:" ; ky tự điêu khiên 10 (xuông dòng) và

13 (lùi đầu dòng) đê định dạng khi In ra màn hình

trong quá trình tính toán tông các chữ số

đoạn bộ nhớ cho các mã lệnh của chương trình sẽ được thực thị

thực thị

; 1 Tro thanh ghi ds vao doan data

segment) vao thanh ghi ax

doan dit liéu

; 2 Hien thi thong bao ‘Nhap so:’

13

Trang 14

chuan bi in ra man hinh

chuôi cua DOS interrupt 21h

; 3 Nhap chuoi so vao bo dem

chuẩn bị nhận chuỗi nhập vào từ bàn phím

nhập chuỗi từ ban phim cua DOS interrupt 21h

mảng so

; 4 Lay so luong ki tu da nhap

(chứa độ dài tối đa và số lượng ký tự nhập vào) và

bắt đầu trỏ đến ký tự số đầu tiên trong chuỗi

; 5.Chuyen ki tu so thanh gia tri so

; tinh tong luu vao stack

SỐ

từng ký tự số trong chuỗi Máy tính sử dụng nhãn

từng ký tự

trong chuỗi so) va lưu vao bl

số tương ứng (ví dụ: 3) băng cách trừ đi giá trị

ASCII cua '0' (30h) ti bl

tổng ax, nơi lưu trữ tông các chữ số đã nhập

chuỗi

sau nhãn Lap đủ n lân, với n được đặt trước trong

thanh ghi CX Sau môi lân lặp CX tự động giảm l

đơn vị (Cx = Cx — 1) và lệnh lặp sẽ dừng khi Cx =

0

14

Trang 15

Đặt gia tri cx bang 0 dé chuan bi cho vong lap chia

số thành các ky ty riêng le

phép chia

dư trong ah

cộng 30h

nào còn lại đề chia không

chia tiếp

37 Hien thi chuoi ‘Tong cac chu so:’

38 Hien thi ket qua tong da tinh

thị các ký tự SỐ

loop Hienthi giảm giá trị cx vả nếu cx không bằng 0, quay lại

nhãn Hienthi dé hién thị ky tự số tiếp theo từ stack; nêu cx băng 0, vòng lặp kết thúc

;9 Ket thua chuong trình

chương trình của DOS interrupt 21h

15

Ngày đăng: 23/12/2024, 12:43

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN