CHƯƠNG 6 : NGÔN NGỮ ASSEMBLY
2. Các Lệnh cơ bản
Mục đích:
- Hiểu được cú pháp và sử dụng được các lệnh cơ bản
2.1 Các lệnh tính toán
a. ADD:Addition (cộng 2 toán hạng)
Cú pháp: ADD đích, nguồn
Tác dụng: Cộng toán hạng đích với toán hạng nguồn. Kết quả được chứa trong toán hạng đích
Đích = đích + nguồn
Điều kiện: hai toán hạng phải cùng độ dài, không được là 2 thanh ghi đoạn. ADD AX,word1
AX = AX + word1
b. SUB: Subtraction (trừ)
Cú pháp: SUB đích, nguồn
Tác dụng: Trừ nội dung của toán hạng đích cho toán hạng nguồn, kết quả chứa trong toán hạng đích.
Ví dụ:
MOV BX,F0h SUB BX,50h
BX = BX -50h = A0h
c. MUL: Multiplexing (nhân không dấu)
Nhân toán hạng với nội dung chứa trong thanh ghi AX. Tức là nhân 2 toán hạng với nhau nhưng 1 toán hạng phải được chứa trong AX. Hoặc là trong DX và AX
86
Tùy thuộc vào độ dài của toán hạng gốc mà xác định kết quả: Gốc: 8 bit thì số bị nhân trong AL kết quả chứa trong AX Gốc: 16 bit thì số bị nhân trong AX kết quả chứa trong DX:AX Ví dụ
MOV AL,10h MOV BL,5h MUL BL
Vì toán hạng nguồn là thanh ghi BL, nên kết quả sẽ được lấy ra trong AX. AX=50h. Trong trường hợp muôn nhân số có dấu, ta có thể sử dụng lệnh IMUL có dạng lệnh như lệnh MUL
d. DIV: Unsigned Divide (chia hai số không có dấu)
Cú pháp
DIV nguồn
Nguồn là số 8 bit: AX/nguồn số bị chia phải là số không dấu 16 bit trong AX sau khi chia thương chứa trong AL còn số dư chứa trong AH.
Nguồn là số 16 bit:DX: AX/nguồn số bị chia phải là số không dấu đặt trong cặp DX:AX sau khi chia thương chứa trong AX còn số dư chứa trong DX.
Nguồn =0 (chia cho 0) hoặc kết quả lớn hơn FFh, FFFFh thì gọi ngắt INT 0. Trong trường hợp muốn chia số có dấu, ta có thể sử dụng lệnh IDIV có dạng lệnh như lệnh DIV
2.2 Lệnh nhập và xuất.
a. Lệnh IN: nhập vào từ cổng 1 byte hay 1 word Cú pháp
IN thanhchứa, cổng
Nếu thanh chứa là AL thì dữ liệu 8 bit được đưa vào có giá trị là địa chỉ cổng.
Nếu thanh chứa là AX thì dữ liệu 16 bit được đưa vào từ cổng có giá trị là địa chỉ cổng +1
Địa chỉ cổng trong khoảng 00h – FFh
b. Lệnh OUT: xuất ra cổng 1 byte hoặc 1 word Cú pháp
OUT địa_chỉ_cổng, Acc