Skip to content

thou05/assembly-learn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

🌟 Learn Assembly

Table of Contents

  1. 🗂 Data Declaration

  2. 🏗 Program Structure

  3. 🔧 Common 21h Interrupts

  4. ⚙️ Commands

  5. 📘 Additional Knowledge

  6. The Teacher Guides Code

  7. More Code for Self-Study

Basic knowledge

1. Khai báo dữ liệu

  • Khai báo biến
    • s1 db 1 : s1 dài 1 byte, s1 = 1
    • s2 db ?: s2 dài 1 byte và không có giá trị đầu
    • s3 db 10 dup(?): mảng 10 phần tử, không gán giá trị ban đầu
    • s4 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

2. Cấu trúc chương trình

.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

3. Ngắt 21 thường dùng

  • 01h: nhập 1 ký tự, al chứa ký tự nhập
  • 02h: hiển thị 1 ký tự ascii trong thanh dl
  • 09h: in ra 1 chuỗi ký tự kết thúc bằng $, địa chỉ chuỗi lưu trong ds:dx
  • 4ch: thoát chương trình, al : mã thoát
  • 0Ah = 10 : nhập chuỗi ký tự từ bàn phím đến khi enter, địa chỉ lưu trong ds:dx

4. Lệnh

Dạng lệnh: <mã gợi nhớ> <toán hạng đích>, <toán hạng nguồn>

4.1 Lệnh chuyển địa chỉ

  • mov đích, nguồn : copy dữ liệu từ nguồn đến đích
  • lea reg, mem : (Load Effective Address) chuyển địa chỉ offset của toán hạng bộ nhớ vào thanh ghi reg16

4.2 Lệnh số học

  • Cộng: add đích, nguồn or inc đích

  • Trừ: sub đích, nguồn or dec đích

    • inc, dec tăng giảm 1 đơn vị
  • Compare cmp đích, nguồn : so sánh

  • Nhân: mul nguôn

    • ax = al * 8bit : lấy al * nguồn -> kết quả nằm trong ax

    • dx ax = ax * 16 bit : ax * nguồn -> kết quả nằm trong dx:ax, dx chứa phần cao, ax chứa phần thấp

    • VD:

       MOV AL, 5 ; AL = 5 
       MOV BL, 10 ; BL = 10 
       MUL BL ; AL * BL, kết quả nằm trong AX 
       ; AX = 50 (0x32)
  • Chia: div nguồn

    • lấy ax (số bị chia) chia cho nguồn (số chia)
    • 8-bit:
      • Thương nằm trong AL
      • Số dư nằm trong AH
    • 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
    • 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)

4.3 Lệnh chuyển điều khiển

  • 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

The Teacher Guides Class Exercises

  1. Lesson 1
  2. Lesson 2
  3. Lesson 3
  4. Lesson 4

More Exercises for Self-Study

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published