- Khai báo biến
s1 db 1
: s1 dài 1 byte, s1 = 1s2 db ?
: s2 dài 1 byte và không có giá trị đầus3 db 10 dup(?)
: mảng 10 phần tử, không gán giá trị ban đầus4 db 'a'
: biến kiểu ký tựs5 db 'thao xinh gai$'
: biến kiểu chuỗi,$
- kết thúc chuỗi
.model small
.stack 100h
.data
.code
main proc
;chuyen dia chi data vao ds
mov ax, @data
mov ds, ax
;ket thuc chuong trinh
mov ah, 4ch
int 21h
main endp
end main
01h
: nhập 1 ký tự,al
chứa ký tự nhập02h
: hiển thị 1 ký tự ascii trong thanhdl
09h
: in ra 1 chuỗi ký tự kết thúc bằng$
, địa chỉ chuỗi lưu trongds:dx
4ch
: thoát chương trình,al
: mã thoát0Ah
=10
: nhập chuỗi ký tự từ bàn phím đến khi enter, địa chỉ lưu trongds:dx
Dạng lệnh: <mã gợi nhớ> <toán hạng đích>, <toán hạng nguồn>
mov đích, nguồn
: copy dữ liệu từ nguồn đến đíchlea reg, mem
: (Load Effective Address) chuyển địa chỉ offset của toán hạng bộ nhớ vào thanh ghi reg16
-
Cộng:
add đích, nguồn
orinc đích
-
Trừ:
sub đích, nguồn
ordec đích
- inc, dec tăng giảm 1 đơn vị
-
Compare
cmp đích, nguồn
: so sánh -
Nhân:
mul nguôn
-
Chia:
div nguồn
- lấy
ax
(số bị chia) chia chonguồn
(số chia) - 8-bit:
- Thương nằm trong
AL
- Số dư nằm trong
AH
- Thương nằm trong
- 16-bit:
DX:AX
sẽ chứa số bị chia, trong đóDX
chứa phần cao vàAX
chứa phần thấp- Thương nằm trong
AX
- Số dư nằm trong
DX
- Thương nằm trong
- VD
MOV AX, 50 ; AX = 50 MOV BL, 10 ; BL = 10 DIV BL ; AX / BL ; Thương nằm trong AL (AL = 5) ; Số dư nằm trong AH (AH = 0)
- lấy
-
jmp label
: chuyển chương trình từ vị trí này sang vị trí khác, không cần điều kiện -
je/jz label
: jump equal/ jump zero nhảy nếu bằng -
jne/ jnz
: không bằng -
jg/jnle
:greater/not less equal lớn hơn -
jge/gnl
: greater equal / not less : lớn hoăn hoặc bằng -
ja
: nhảy nếu lớn hơn -
jl/jnge
: less / not greater equal -
jle/ jng
: less equal / not greater : nhỏ hơn or bằng -
jb label
: nhảy nếu nhỏ hơn -
cmp đích, nguồn
: so sánh -
loop đích
: vòng lặp
- Lesson 1
- Lesson 2
- Lesson 3
- Lesson 4