Mục đích:
- Hiểu được cú pháp và sử dụng được các lệnh cơ bản
6.2.1 Các lệnh tính tốn
a. ADD:Addition (cộng 2 tốn hạng)
Cú pháp: ADD đích, nguồn
Tác dụng: Cộng tốn hạng đích với tốn hạng nguồn. Kết quả được chứa trong tốn hạng đích: Đích = đích + nguồn
Điều kiện: hai tố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 tốn hạng đích cho tốn hạng nguồn, kết quả chứa trong toán hạng đích.
Ví dụ: MOV BX,F0h SUB BX,50h
c. MUL: Multiplexing (nhân khơng dấu)
Nhân tố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 cả DX và AX
MUL gốc
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ì tố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 mn 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
6.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 thanh chứ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
b. Lệnh OUT: xuất ra cổng 1 byte hoặc 1 word Cú pháp
OUT địa_chỉ_cổng, Acc