Lab01

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Họ và tên: Lê Hoàng Phong

MSSV: 22521086
Lớp: CE103O22.2

Bài thực hành LAB01


1. Thực hiện trừ 2 số 32 bits.
Trước tiên, ta thực hiện khai báo 2 số 32 bits.

Hình 1: Thực hiện khai báo các biến


 NUM1: Có kiểu dữ liệu là Define Double Word và có số dạng HexaDecimal
 NUM2: Có kiểu dữ liệu là Define Double Word và có số dạng HexaDecimal
 RESULT: Có kiểu dữ liệu là Define Double Word và nhiệm vụ là lưu giá trị của phép
toán dưới dạng HexaDecimal
 CARRY: Có kiểu dữ liệu là Define Byte và có nhiệm vụ là +1 khi CF =1

Tiếp theo, ta thực hiện quá trình trừ 2 số 32 bits thông qua đoạn code sau:

Hình 2: Code thực hiện phép tính


 Các số NUM1 và NUM2 được lưu vào Stack
 NUM1 và NUM2 được chia thành 2 số 16 bits . 16 bit thấp của NUM1 được lưu ở địa chỉ
[NUM1], 16 bit cao của NUM2 được lưu ở địa chỉ [ NUM1+2 ]. NUM2 tương tự như
NUM1.

 Đầu tiên, ta gán 16 bits thấp lần lượt vào thanh ghi AX và BX thông qua lệnh MOV. Sau
đó thực hiện phép tính trừ 2 số 16 bits thông qua lệnh SUB và giá trị sẽ trả về thanh ghi
AX.

 Tiếp theo, ta sẽ gán giá trị vừa mới tìm được vào RESULT và lưu vào trong Stack

 Sau đó, ta gán địa chỉ tiếp theo của NUM1 là [ NUM1+2 ] thông qua lệnh MOV vào
trong thanh ghi AX. Tương tự với NUM2 và địa chỉ được gán vào thanh ghi BX

 Tiếp theo, ta thực hiện lệnh SBB để trừ 2 số 16 bits cao. Nếu phép tính ở 16 bits thấp có
nhớ sau khi thực hiện trừ thì lệnh SBB sẽ giúp trừ 2 số 16 bits và cả bit nhớ. Kết quả sẽ
được lưu vào thanh ghi AX.

 Sau đó, ta thực hiện lệnh MOV để gán giá trị tại thanh ghi AX vào trong địa chỉ tiếp theo
của RESULT là [ RESULT +2 ].

 Lệnh JNC EXIT sẽ thực hiện nhảy đến label EXIT khi cờ CF = 0 và thực hiện lệnh tiếp
theo khi cờ CF =1.
 Lệnh INC CARRY sẽ tăng giá trị của biến CARRY lên 1 khi cờ CF = 1.
 Cuối cùng là lệnh kết thúc chương trình.
Kết quả của phép toán:
Hình 3: Kết quả hiển thị trên memory

Hình 4: Giá trị của cờ CF

Hình 5: Kết quả khi lưu trong Stack


 Tại địa chỉ 0710:0108 là giá trị của quá trình thực hiện trừ 2 số 16 bits thấp
 Tại địa chỉ 0710:010A là giá trị của quá trình thực hiện trừ 2 số 16 bits cao
 Tại địa chỉ 0710:010C là giá trị của quá trình tăng giá trị của CARRY khi cờ CF =1

You might also like