Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086

Nội dungCác lệnh di chuyển dữ liệu

• MOV, XCHG, POP, PUSH, POPF, PUSHF, IN, OUT

• Các lệnh di chuyển chuỗi MOVS, MOVSB, MOVSW

• MOV

 Dùng để chuyển giữa các thanh ghi, giữa 1 thanh ghi và 1 ô nhớ hoặc

chuyển 1 số vào thanh ghi hoặc ô nhớ

 Cú pháp: MOV Đích, nguồn

 Lệnh này không tác động đến cờ

 Ví dụ:

MOV AX, BX

MOV AH, „A‟

MOV AL, [1234H]

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086 trang 1

Trang 1

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086 trang 2

Trang 2

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086 trang 3

Trang 3

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086 trang 4

Trang 4

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086 trang 5

Trang 5

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086 trang 6

Trang 6

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086 trang 7

Trang 7

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086 trang 8

Trang 8

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086 trang 9

Trang 9

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086 trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 64 trang xuanhieu 3260
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086

Bài giảng Kiến trúc máy tính - Chương: Lập trình hợp ngữ 8086
h nhảy không điều kiện JMP 
• Cú pháp: JMP [nhãn] 
• Ý nghĩa: Nhảy sang dòng lệnh có gán nhãn. 
• Ví dụ: 
 MOV AL,8 
 MOV CL,5 E B Độ lệch 
 JMP TRU ; nhảy đến nhãn TRU và bỏ qua lệnh phía dưới 
 ADD AL,CL 
 TRU: 
 SUB AL,CL ; Kết quả là AL = 3, CL =5 
 Lệnh nhảy có điều kiện 
• JE or JZ, JNE or JNZ, JG, JGE, JL, JLE (dùng cho số có dấu) và 
 JA, JB, JAE, JBE (dùng cho số không dấu) ... 
• Nhảy được thực hiện phụ thuộc vào các cờ 
• Ví dụ: 
 Nhan1: XOR BX, BX 
 Nhan2: MOV AX, 1 
 CMP AL, 10H 
 JNE Nhan1 
 JE Nhan2 
 Lệnh nhảy có điều kiện 
 LỆNH Ý NGHĨA CỜ KIỂM TRA GHI CHÚ 
 Nhảy nếu nhỏ hơn/không 
JB/JNAE CF = 1 Áp dụng cho số không dấu 
 lớn hơn hay bằng 
 Nhảy nếu nhỏ hơn hay CF = 1 hay 
JBE/JNA Áp dụng cho số không dấu 
 bằng/ không lớn hơn ZF=1 
 Nhảy nếu lớn hơn/ không CF = 0 và ZF= 
JA/JNBE Áp dụng cho số không dấu 
 nhỏ hơn hay bằng 0 
 Nhảy nếu lớn hơn hay 
JAE/ JNB CF = 0 Áp dụng cho số không dấu 
 bằng/ không nhỏ hơn 
JE/JZ Nhảy nếu bằng ZF = 1 
JNE/JNZ Nhảy nếu không bằng ZF = 0 
 Nhảy nếu nhỏ hơn/ không 
JL/JNGE SFOF Áp dụng cho số có dấu 
 lớn hơn hay bằng 
 Nhảy nếu nhỏ hơn hay SFOF hay 
JLE/JNG Áp dụng cho số có dấu 
 bằng/ không lớn hơn ZF=1 
 Nhảy nếu lớn hơn/ không SF=OF và ZF= 
JG/JNLE Áp dụng cho số có dấu 
 nhỏ hơn hay bằng 0 
 Nhảy nếu lớn hơn hay 
JGE/JNL SF = OF Áp dụng cho số có dấu 
 bằng/ không nhỏ hơn 
 Lệnh lặp LOOP 
• Cú pháp: LOOP 
• Ý nghĩa: CX = CX –1; Nếu CX ≠ 0 thì nhảy đến vị trí được đánh 
 nhãn. Lặp lại đoạn chương trình cho đến khi CX =0 
• Ví dụ: 
 MOV CX,10 
 MOV AL,0 
 MOV BL,1 
 LAP: 
 ADD AL,BL 
 LOOP LAP ; Kết quả: AL = 10 
 Lệnh lặp LOOPNZ 
• Cú pháp: LOOPNZ 
• Ý nghĩa: CX = CX –1; Nếu CX ≠ 0 thì nhảy đến vị trí được đánh 
 nhãn. Lặp lại đoạn chương trình cho đến khi CX =0 hoặc khi cờ 
 ZF bằng 1. 
• Ví dụ 
 MOV CX, 20 ; Thiet lap so luong toi da ky tu co the nhap 
 MOV AH,1 ; Cho nguoi dung nhap ky tu bat ky 
 lap: 
 INT 21h 
 CMP AL,10 ; Co phai phim Enter duoc nhan khong 
 LOOPNZ lap ; Neu khong phai phim Enter và nhap chua qua 20 
 lan thi doc tiep 
 Lệnh ngắt INT 21H 
• INT 21h là lệnh gọi một chương trình con của hệ điều hành. 
 Chương trình con này nhiều chức năng khác nhau tuỳ theo giá 
 trị của thanh ghi AH. 
 Lệnh ngắt INT 21H 
• Nhập ký tự từ bàn phím và hiển thị (AH=01H) 
• Chức năng AH =01h: thực hiện nhập một ký tự từ bàn phím, 
 mã ASCII của ký tự chứa trong AL (hoặc AL=0 nếu là phím 
 điều khiển). 
• Ví dụ: 
 MOV AH, 01H ; chọn chức năng 01H 
 INT 21H ; nhập ký tự và chứa vào AL 
 Lệnh ngắt INT 21H 
• Xuất ký tự ra màn hình (AH=02H) 
• Chức năng AH=02h: thực hiện xuất ký tự theo mã ASCII chứa 
 trong thanh ghi DL ra màn hình. 
• Ví dụ: 
 MOV AH, 02H 
 MOV DL, „A‟ 
 INT 21h ; Hiện chữ “A” ra màn hình 
 Lệnh ngắt INT 21H 
• Xuất chuỗi ký tự ra màn hình (AH=09H) 
• Chức năng AH =09h: thực hiện xuất chuỗi ký tự có địa chỉ ô 
 chứa trong thanh ghi DX (và địa chỉ đoạn chứa trong DS) ra 
 màn hình. Chuỗi ký tự phải kết thúc bằng dấu $. 
• Ví dụ: 
 .DATA 
 THONGBAO DB “Hello HUTECH$” 
 .CODE 
 MOV AX, @DATA 
 MOV DS, AX 
 MOV AH, 09H 
 LEA DX, THONGBAO 
 INT 21h ; Xuất chuỗi ký tự “Hello HUTECH” ra màn hình 
 Lệnh ngắt INT 21H 
• Xuất chuỗi ký tự ra màn hình (AH=4CH) 
• Chức năng AH =4CH: Kết thúc chương trình loại .exe 
• Ví dụ: 
 MOV AH, 4CH 
 INT 21h 
 Nội dung 
• Mô tả tập lệnh của 8086 
• Lập trình hợp ngữ 8086 
 Lập trình hợp ngữ với 8086 
• Giới thiệu khung của chương trình hợp ngữ 
• Các cấu trúc lập trình cơ bản thực hiện bằng hợp ngữ 
 Lập trình hợp ngữ với 8086 
• Giới thiệu khung của chương trình hợp ngữ 
  Cú pháp của chương trình hợp ngữ 
  Dữ liệu cho chương trình 
  Biến và hằng 
  Khung của một chương trình hợp ngữ 
• Các cấu trúc lập trình cơ bản thực hiện bằng hợp ngữ 
 Cú pháp của chương trình hợp ngữ 
1. .Model Small 
 khai báo kiểu kích thước bộ nhớ 
2. .Stack 100 
 khai báo đoạn ngăn xếp 
3. .Data 
4. Tbao DB ‘Chuoi da sap xep:’, 10, 13 
5. MGB DB ‘a’, ‘Y’, ‘G’, ‘T’, ‘y’, ‘Z’, ‘U’, ‘B’, ‘D’, ‘E’, khai báo đoạn dữ liệu 
6. DB ‘$’ 
7. .Code 
8. MAIN Proc khai báo đoạn mã lệnh 
9. MOV AX, @Data ;khoi dau DS 
10. MOV DS, AX 
11. MOV BX, 10 ;BX: so phan tu cua mang bắt đầu chương trình chính 
12. LEA DX, MGB ;DX chi vao dau mang byte 
13. DEC BX ;so vong so sanh phai lam 
14. LAP: MOV SI, DX ; SI chi vao dau mang 
15. MOV CX, BX ; CX so lan so cua vong so 
16. MOV DI, SI ;gia su ptu dau la max 
17. MOV AL, [DI] ;AL chua phan tu max 
18. TIMMAX: chú thích bắt đầu 
19. INC SI ;chi vao phan tu ben canh 
20. CMP [SI], AL ; phan tu moi > max? bằng dấu ; 
21. JNG TIEP ;khong, tim max 
22. MOV DI, SI ; dung, DI chi vao max 
23. MOV AL, [DI] ;AL chua phan tu max 
24. TIEP: LOOP TIMMAX ;tim max cua mot vong so 
25. CALL DOICHO ;doi cho max voi so moi 
26. DEC BX ;so vong so con lai 
27. JNZ LAP ;lam tiep vong so moi 
28. MOV AH, 9 ; hien thi chuoi da sap xep 
29. MOV DX, Tbao 
30. INT 21H 
31. MOV AH, 4CH ;ve DOS 
32. INT 21H 
33. MAIN Endp 
34. DOICHO Proc 
35. PUSH AX kết thúc chương trình chính 
36. MOV AL, [SI] 
37. XCHG AL, [DI] 
38. MOV [SI], AL 
39. POP AX bắt đầu chương trình con 
40. RET 
41. DOICHO Endp 
42. END MAIN kết thúc đoạn mã 
 Cú pháp của chương trình hợp ngữ 
• Tên Mã lệnh Các toán hạng ; chú giải 
• Chương trình dịch không phân biệt chữ hoa, chữ thường 
• Trường tên: 
  chứa các nhãn, tên biến, tên thủ tục 
  độ dài: 1 đến 31 ký tự 
  tên không được có dấu cách, không bắt đầu bằng số 
  được dùng các ký tự đặc biệt: ? . @ _ $ % 
  dấu . phải được đặt ở vị trí đầu tiên nếu sử dụng 
 Lập trình hợp ngữ với 8086 
• Giới thiệu khung của chương trình hợp ngữ 
  Cú pháp của chương trình hợp ngữ 
  Dữ liệu cho chương trình 
  Biến và hằng 
  Khung của một chương trình hợp ngữ 
• Các cấu trúc lập trình cơ bản thực hiện bằng hợp ngữ 
 Dữ liệu cho chương trình 
• Dữ liệu: 
  các số hệ số 2: 0011B 
  hệ số 10: 1234 
  hệ số 16: 1EF1H, 0ABBAH 
  Ký tự, chuỗi ký tự: „A‟, „abcd‟ 
 Lập trình hợp ngữ với 8086 
• Giới thiệu khung của chương trình hợp ngữ 
  Cú pháp của chương trình hợp ngữ 
  Dữ liệu cho chương trình 
  Biến và hằng 
  Khung của một chương trình hợp ngữ 
• Các cấu trúc lập trình cơ bản thực hiện bằng hợp ngữ 
 Biến và hằng 
• DB (define byte): định nghĩa biến kiểu byte 
• DW (define word): định nghĩa biến kiểu từ 
• DD (define double word): định nghĩa biến kiểu từ kép 
• Biến byte: 
  Tên DB gia_trị_khởi đầu 
  Ví dụ: 
 MOV AL, B1 
 B1 DB 4 
 B1 DB ? LEA BX, B1 
 C1 DB „$‟ MOV AL, [BX] 
 C1 DB 34 
 Biến và hằng 
• Biến từ: 
  Tên DW gia_trị_khởi đầu 1300A 
  Ví dụ: 13009 
 13008 9 
 W1 DW 4 
 13007 8 
 W2 DW ? 13006 7 
• Biến mảng: 13005 6 
 13004 
  M1 DB 4, 5, 6, 7, 8, 9 5 
 13003 4 M1 
 13002 
  M2 DB 100 DUP(0) 13001 
  M3 DB 100 DUP(?) 13000 
  M4 DB 4, 3, 2, 2 DUP (1, 2 DUP(5), 6) 
  M4 DB 4, 3, 2, 1, 5, 5, 6, 1, 5, 5, 6 
 Biến và hằng 
• Biến kiểu xâu ký tự 
  STR1 DB „string‟ 
  STR2 DB 73h, 74h, 72h, 69h, 6Eh, 67h 
  STR3 DB 73h, 74h, „r‟, „i‟, 6Eh, 67h 
• Hằng có tên 
  Có thể khai báo hằng ở trong chương trình 
  Thường được khai báo ở đoạn dữ liệu 
  Ví dụ: 
 CR EQU 0Dh ;CR là carriage return 
 LF EQU 0Ah ; LF là line feed 
 CHAO EQU „Hello‟ 
 MSG DB CHAO, „$‟ 
 Lập trình hợp ngữ với 8086 
• Giới thiệu khung của chương trình hợp ngữ 
  Cú pháp của chương trình hợp ngữ 
  Dữ liệu cho chương trình 
  Biến và hằng 
  Khung của một chương trình hợp ngữ 
• Các cấu trúc lập trình cơ bản thực hiện bằng hợp ngữ 
 Khung của chương trình hợp ngữ 
• Khai báo quy mô sử dụng bộ nhớ 
  .MODEL Kiểu kích thuớc bộ nhớ 
  Ví dụ: .Model Small 
 Kiểu Mô tả 
 Tiny (hẹp) mã lệnh và dữ liệu gói gọn trong một đoạn 
 Small (nhỏ) mã lệnh nằm trong 1 đoạn, dữ liệu 1 đoạn 
 Medium (tB) mã lệnh nằm trong nhiều đoạn, dữ liệu 1 đoạn 
 Compact (gọn) mã lệnh nằm trong 1 đoạn, dữ liệu trong nhiều đoạn 
 Large (lớn) mã lệnh nằm trong nhiều đoạn, dữ liệu trong nhiều đoạn, không 
 có mảng nào lớn hơn 64 K 
 Huge (đồ sộ) mã lệnh nằm trong nhiều đoạn, dữ liệu trong nhiều đoạn, các 
 mảng có thể lớn hơn 64 K 
 Khung của chương trình hợp ngữ 
• Khai báo đoạn ngăn xếp 
  .Stack kích thuớc (bytes) 
  Ví dụ: 
  .Stack 100 ; khai báo stack có kích thước 100 bytes 
  Giá trị ngầm định 1KB 
• Khai báo đoạn dữ liệu: 
  .Data 
  Khai báo các biến và hằng 
• Khai báo đoạn mã 
  .Code 
 Khung của chương trình hợp ngữ 
• Khung của chương trình hợp ngữ để dịch ra file .EXE 
 .Model Small 
 .Stack 100 
 .Data 
 ;các định nghĩa cho biến và hằng 
 .Code 
 MAIN Proc 
 ;khới đầu cho DS 
 MOV AX, @data 
 MOV DS, AX 
 ;các lệnh của chương trình 
 ;trở về DOS dùng hàm 4CH của INT 21H 
 MOV AH, 4CH 
 INT 21H 
 MAIN Endp 
 ;các chương trình con nếu có 
 END MAIN 
 Khung của chương trình hợp ngữ 
• Chương trình Hello.EXE 
 Lập trình hợp ngữ với 8086 
• Giới thiệu khung của chương trình hợp ngữ 
• Các cấu trúc lập trình cơ bản thực hiện bằng hợp ngữ 
  Cấu trúc lựa chọn 
  Cấu trúc lặp 
 Cấu trúc lựa chọn If-then 
• If (điều_kiện) then (công_việc) 
• Ví dụ: Gán cho BX giá trị tuyệt đối của AX 
 ; If AX<0 
 CMP AX, 0 ; AX<0 ? 
 JNL End_if ; không, thoát ra 
 ; then 
 NEG AX ; đúng, đảo dấu 
 End_if: MOV BX, AX ;gán 
 Cấu trúc lựa chọn If-then-else 
• If (điều_kiện) then (công_việc1) 
 else (công_việc2) 
• Ví dụ: if AX<BX then CX=0 else CX=1 
 ; if AX<BX 
 CMP AX, BX ; AX<BX ? 
 JL Then_ ; đúng, CX=0 
 ;else 
 MOV CX, 1 ; sai, CX=1 
 JMP End_if 
 Then_: MOV CX, 0; 
 End_if: 
 Cấu trúc lựa chọn case 
• case Biểu thức 
 Giá trị 1: công việc 1 
 Giá trị 2: công việc 2 
 ... 
 Giá trị N: công việc N 
 End Case 
 CMP AX, 0 ; 
• Ví dụ: JL AM ; AX<0 
 JE Khong ; AX=0 
 Nếu AX0 
 Nếu AX=0 thì CX=0 AM: MOV CX, -1 
 Nếu AX>0 thì CX=1 JMP End_case 
 Khong: MOV CX, 0 
 JMP End_case 
 DUONG: MOV CX, 1 
 End_case: 
 Cấu trúc lặp FOR-DO 
• for (số lần lặp) do (công việc) 
 khởi tạo bộ đếm ví dụ: Hiển thị một dòng ký tự $ trên màn hình 
 công việc 
 MOV CX, 80 ;số lần lặp 
 MOV AH,2 ;hàm hiển thị 
 giảm bộ đếm đi 1 MOV DL,’$’ ;DL chứa ký tự cần hiển thị 
 HIEN: INT 21H ; Hiển thị 
 LOOP HIEN 
 End_for 
 S 
 bộ đếm=0? 
 Đ 
 Cấu trúc lặp While-DO 
• while (điều kiện) do (công việc) 
 ví dụ: đếm số ký tự đọc được từ bàn phím, 
 Đ khi gặp ký tự CR thì thôi 
 Điều kiện 
 XOR CX, CX ;CX=0 
 S MOV AH,1 ;hàm đọc ký tự từ bàn phím 
 TIEP: 
 INT 21H ; đọc một ký tự vào AL 
 công việc CMP AL, 13 ; đọc CR? 
 JE End_while ; đúng, thoát 
 INC CX ; sai, thêm 1 ký tự vào tổng 
 JMP TIEP ; đọc tiếp 
 End_while: 
 Cấu trúc lặp Repeat-until 
• Repeat (công việc) until (điều kiện) 
 ví dụ: đọc từ bàn phím cho tới khi gặp ký tự CR thì thôi 
 công việc 
 MOV AH,1 ;hàm đọc ký tự từ bàn phím 
 TIEP: 
 INT 21H ; đọc một ký tự vào AL 
 Điều kiện CMP AL, 13 ; đọc CR? 
 JNE TIEP ; chưa, đọc tiếp 
 Đ End_: 
 S 
 Nội dung 
• Các chế độ địa chỉ của 8086 
  Chế độ địa chỉ thanh ghi 
  Chế độ địa chỉ tức thì 
  Chế độ địa chỉ trực tiếp 
  Chế độ địa chỉ gián tiếp qua thanh ghi 
  Chế độ địa chỉ tương đối cơ sở 
  Chế độ địa chỉ tương đối chỉ số 
  Chế độ địa chỉ tương đối chỉ số cơ sở 
 Chế độ địa chỉ thanh ghi 
 (Register Addressing Mode) 
• Dùng các thanh ghi như là các toán hạng 
• Tốc độ thực hiện lệnh cao 
• Ví dụ: 
  MOV BX, DX ; Copy nội dung DX vào BX 
  MOV AL, BL ; Copy nội dung BL vào AL 
  MOV AL, BX ; không hợp lệ vì các thanh ghi có kích thước khác nhau 
  MOV ES, DS ; không hợp lệ (segment to segment) 
  MOV CS, AX ; không hợp lệ vì CS không được dùng làm thanh ghi đích 
  ADD AL, DL ; Cộng nội dung AL và DL rồi đưa vào AL 
 Chế độ địa chỉ tức thì 
 (Immediate Addressing Mode) 
• Toán hạng đích là thanh ghi hoặc ô nhớ 
• Toán hạng nguồn là hằng số 
• Dùng để nạp hằng số vào thanh thi (trừ thanh ghi đoạn và 
 thanh cờ) hoặc vào ô nhớ trong đoạn dữ liệu DS 
• Ví dụ: 
  MOV BL, 44 ; Copy số thập phân 44 vào thanh ghi BL 
  MOV AX, 44H ; Copy 0044H vào thanh ghi AX 
  MOV AL, „A‟ ; Copy mã ASCII của A vào thanh ghi AL 
  MOV DS, 0FF0H ; không hợp lệ 
  MOV AX, 0FF0H ; 
  MOV DS, AX ; 
  MOV [BX], 10 ; copy số thập phân 10 vào ô nhớ DS:BX 
 Chế độ địa chỉ trực tiếp 
 (Direct Addressing Mode) 
• Một toán hạng là địa chỉ ô nhớ chứa dữ liệu 
• Toán hạng kia chỉ có thể là thanh ghi 
• Ví dụ: 
  MOV AL, [1234H] ; Copy nội dung ô nhớ có địa chỉ DS:1234 vào AL 
  MOV [ 4320H ], CX ; Copy nội dung của CX vào 2 ô nhớ liên tiếp DS: 4320 
 và DS: 4321 
 Chế độ địa chỉ gián tiếp qua thanh ghi 
 (Register indirect Addressing Mode) 
• Một toán hạng là thanh ghi chứa địa chỉ của 1 ô nhớ dữ liệu 
• Toán hạng kia chỉ có thể là thanh ghi 
• Ví dụ: 
  MOV AL, [BX] ; Copy nội dung ô nhớ có địa chỉ DS:BX vào AL 
  MOV [ SI ], CL ; Copy nội dung của CL vào ô nhớ có địa chỉ DS:SI 
  MOV [ DI ], AX ; copy nội dung của AX vào 2 ô nhớ liên tiếp DS: DI và DS: 
 (DI +1) 
 Chế độ địa chỉ tương đối cơ sở 
 (Based relative Addressing Mode) 
• Một toán hạng là thanh ghi cơ sở BX, BP và các hằng số biểu 
 diễn giá trị dịch chuyển 
• Toán hạng kia chỉ có thể là thanh ghi 
• Ví dụ: 
  MOV CX, [BX]+10 ; Copy nội dung 2 ô nhớ liên tiếp có địa chỉ DS:BX+10 và 
 DS:BX+11 vào CX 
  MOV CX, [BX+10] ; Cách viết khác của lệnh trên 
  MOV AL, [BP]+5 ; copy nội dung của ô nhớ SS:BP+5 vào thanh ghi AL 
 Chế độ địa chỉ tương đối chỉ số 
 (Indexed relative Addressing Mode) 
• Một toán hạng là thanh ghi chỉ số SI, DI và các hằng số biểu 
 diễn giá trị dịch chuyển 
• Toán hạng kia chỉ có thể là thanh ghi 
• Ví dụ: 
  MOV AX, [SI]+10 ; Copy nội dung 2 ô nhớ liên tiếp có địa chỉ DS:SI+10 và 
 DS:SI+11 vào AX 
  MOV AX, [SI+10] ; Cách viết khác của lệnh trên 
  MOV AL, [DI]+5 ; copy nội dung của ô nhớ DS:DI+5 vào thanh ghi AL 
 Chế độ địa chỉ tương đối chỉ số cơ sở 
 ( Based Indexed relative Addressing Mode) 
• Ví dụ: 
  MOV AX, [BX] [SI]+8 ; Copy nội dung 2 ô nhớ liên tiếp có địa chỉ 
 DS:BX+SI+8 và DS:BX+SI+9 vào AX 
  MOV AX, [BX+SI+8] ; Cách viết khác của lệnh trên 
  MOV CL, [BP+DI+5] ; copy nội dung của ô nhớ SS:BP+DI+5 vào thanh ghi 
 CL 
 Tóm tắt các chế độ địa chỉ 
 Chế độ địa chỉ Toán hạng Thanh ghi đoạn ngầm định 
 Thanh ghi Thanh ghi 
Tức thì Dữ liệu 
Trực tiếp [offset] DS 
Gián tiếp qua thanh ghi [BX] DS 
 [SI] DS 
 [DI] DS 
Tương đối cơ sở [BX] + dịch chuyển DS 
 [BP] + dịch chuyển SS 
Tương đối chỉ số [DI] + dịch chuyển DS 
 [SI] + dịch chuyển DS 
Tương đối chỉ số cơ sở [BX] + [DI]+ dịch chuyển DS 
 [BX] + [SI]+ dịch chuyển DS 
 [BP] + [DI]+ dịch chuyển SS 
 [BP] + [SI]+ dịch chuyển SS 
 Bỏ chế độ ngầm định thanh ghi đoạn 
 (Segment override) 
• Ví dụ: 
  MOV AL, [BX]; Copy nội dung ô nhớ có địa chỉ DS:BX vào AL 
  MOV AL, ES:[BX] ; Copy nội dung ô nhớ có địa chỉ ES:BX vào AL 

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_chuong_lap_trinh_hop_ngu_8086.pdf