intTypePromotion=1

ôn tập Vi xử lý

Chia sẻ: Trinh Cong Son | Ngày: | Loại File: DOC | Số trang:25

0
118
lượt xem
38
download

ôn tập Vi xử lý

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Khi học về lập trình hợp ngữ thì chủ yếu thao tác trên các thanh ghi và bộ nhớ stack, nên các anh chị phải nắm rõ chức năng của từng thanh ghi để có thể hiểu mà sử dụng các lệnh 1. Tập thanh ghi: 4 thanh ghi đoạn: · CS (Code Segment): thanh ghi đoạn lệnh · DS (Data Segment): thanh ghi đoạn dữ liệu · SS (Stack Segment): thanh ghi đoạn ngăn xếp · ES (Extra Segment): thanh ghi đoạn dữ liệu phụ

Chủ đề:
Lưu

Nội dung Text: ôn tập Vi xử lý

  1. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên Ôn tập Vi Xử Lý Phần 1 – Lý thuyết Khi học về lập trình hợp ngữ thì chủ yếu thao tác trên các thanh ghi và bộ nhớ stack, nên các anh chị phải nắm rõ chức năng của từng thanh ghi để có thể hiểu mà sử dụng các lệnh 1. Tập thanh ghi: 4 thanh ghi đoạn: CS (Code Segment): thanh ghi đoạn lệnh • DS (Data Segment): thanh ghi đoạn dữ liệu • SS (Stack Segment): thanh ghi đoạn ngăn xếp • ES (Extra Segment): thanh ghi đoạn dữ liệu phụ • 3 thanh ghi con trỏ: IP (Instruction Pointer): thanh ghi con trỏ lệnh • SP (Stack Pointer): con trỏ ngăn xếp • BP (Base Pointer): thanh ghi con trỏ cơ sở • 4 thanh ghi dữ liệu: AX (Accumulator): thanh chứa - thanh ghi tích lũy • BX (Base): thanh ghi cơ sở • CX (Count): thanh ghi đếm • DX (Data): thanh ghi dữ liệu • Mỗi thanh ghi này đều có thể được chia ra thành 2 nửa có khả năng sử dụng độc lập. Thanh ghi cờ 2. Các bước lập trình Các bước lập trình hợp ngữ cũng giống như các bước lập trình trong ngôn ngữ bậc cao, cũng gồm những bước như sau: Bước 1: Phát biểu bài toán • Bước 2: Xây dựng thuật giải • Bước 3: Viết mã chương trình • Bước 4: Dịch và sửa lỗi cú pháp • 1
  2. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên Bước 5: Chạy thử và hiệu chỉnh chương trình • 3. Cấu trúc chung của lập trình hợp ngữ .MODEL small .STACK 100h .DATA ; Khai báo các biến ở đây .CODE ; Các lệnh chương trình ghi ở đây END 4. Các lệnh cơ bản trong lập trình hợp ngữ 4.1. Lệnh MOV - Cú pháp: MOV , - Ý nghĩa: lệnh này dùng để sao chép dữ liệu từ toán hạng nguồn vào toán hạng đích - Lưu ý: toán hạng đích phải đủ để nhận dữ liệu • không được sao chép hằng vào thanh ghi đoạn • 2 toán hạng không đồng thời là vùng nhớ hoặc thanh ghi đoạn • - Ví dụ: MOV AX,vungnho ; AX
  3. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên XCHG AL,BH ; AL BH 4.3. Lệnh ADD và SUB - Cú pháp: ADD , SUB , - Ý nghĩa: 2 lệnh này dùng để thêm/bớt nội dung trong toán hạng đích với toán hạng nguồn - Lưu ý: kết quả chứa trong toán hạng đích • toán hạng nguồn có thể là hằng, thanh ghi hoặc vùng nhớ • toán hạng đích có thể là thanh ghi hoặc vùng nhớ • 2 toán hạng không đồng thời là vùng nhớ • 2 toán hạng có thể có dấu (bù 2) hoặc không dấu • - Ví dụ: ADD AX,BX ; AX
  4. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên toán hạng đích có thể là thanh ghi hoặc vùng nhớ • nếu toán hạn đích là giá trị âm nhỏ nhất (-128 hay -32768) thì sau lệnh này sẽ • không thay đổi giá trị - Ví dụ: NEG AX ; AX
  5. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên MOV AH,4Ch ; chon chuc nang 4Ch INT 21h ; ket thuc chuong trinh 4.6. Lệnh INT 10h Lệnh này dùng để xoá màn hình MOV AX,3 INT 10h Bài tập Phần 1 - Bài tập của phần này gồm có 2 phần: Lý thuyết • Bài tập • I. Lý thuyết 1. Tính địa chỉ tuyệt đối tương ứng với địa chỉ tương đối A51h:CD90h Gỉai: - Địa chỉ tương đối có dạng: : - Muốn đổi từ địa chỉ tương đối sang địa chỉ tuyệt đối thì ta áp dụng công thức: Địa chỉ tuyệt đối = địa chỉ đoạn * F + địa chỉ ô Vậy địa chỉ tuyệt đối = A51h * 16 + CD90h = A510h + CD90h = 172A0h 2. Tính địa chỉ tương đối tương ứng với địa chỉ tương đối A25h:CD09h Gỉai: tương tự cách tính trên. 3. Với địa chỉ tuyệt đối 4A37Bh, hãy tính: a. Địa chỉ ô tương ứng với đoạn 40FFh b. Địa chỉ đoạn tương ứng với ô 123Bh Gỉai: Cũng áp dụng công thức trên a. địa chỉ ô = địa chỉ tuyệt đối - địa chỉ đoạn * 16 = 4A37Bh - 40FFh * 16 = 938Bh b. địa chỉ đoạn = (địa chỉ tuyệt đối - địa chỉ ô) / 16 = (4A37Bh - 123Bh) / 16 = 4914h 4. Gỉa sử các byte ở địa chỉ từ 0 đến 4 có trị (thập lục) là AB, CD, EF, 01, 23. Hãy cho biết trị của từ ở địa chỉ 2 Gỉai: Ta có hình ảnh sau: 5
  6. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên Như vậy ta kết luận ở địa chỉ 2 ta có nội dung là EF 5. Gỉa sử chuỗi "12A45" được lưu trữ trong bộ nhớ từ địa chỉ 0 đến 4. Hãy cho biết nội dung của vùng nhớ (dạng thập lục) từ địa chỉ 0 đến 4 Gỉai: tương tự như câu 4: 05h, 04h, 0Ah, 02h, 01h 6. Viết lệnh định nghĩa từ WORDV có trị -1 Gỉai: WORDV DB FFd 7. Viết lệnh định nghĩa hằng MSG có trị là 'DAY LÀ THONG BAO' Gỉai: MSG EQU 'DAY LA THONG BAO' 8. Viết nhóm lệnh tương đương với các lệnh gán như sau: a. B = B - A - 1 b. A = B c. A = 10 - A d. A = B - A * 2 e. C = 2 * B - 3 * A Gỉai: a. B = B - A - 1 c. A = 10 - A b. A = B MOV AX,A ; AX
  7. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên ADD AX,AX ; AX
  8. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên Code: ;==================================================================== ============= ; Noi dung: Viết chương trình hiển thị 3 câu chào sau trên màn hình: ; Hello, world! ; Hello, solar system! ; Hello, universe! ; Ten file: bt02.asm ; Ngay tao: 17/03/2009 - 00:25 ;==================================================================== ============= .model small .stack 100h .data ; Khai bao cac bien tai day CR EQU 13 LF EQU 10 Mess db CR,LF,'Hello, world!' db CR,LF,'Hello, solar system!' db CR,LF,'Hello, universe!$' .code main proc ; Dua du lieu vao thanh ghi DS mov ax,@data mov ds,ax ; Hien thi Mess mov ah,9 lea dx,Mess int 21h ; Exit to DOS mov ah,4ch int 21h main endp end main 3. Viết chương trình nhập một ký tự và hiển thị ở dòng kế tiếp. Kết quả có dạng: Hay nhap mot ky tu: A Ky tu da nhap : A Code: ;==================================================================== =============== ; Noi dung: Viet chuong trinh nhap vao mot ky tu va hien thi lai o dong tiep theo. Ket qua co dang: ; Hay nhap mot ky tu: A ; Ky tu da nhap :A ; Ten file: bt03.asm ; Ngay tao: 17/03/2009 - 00:31 ; Huong dan: ; 1. Khai bao du lieu: ; TBao1 db 13,10,'Hay nhap mot ky tu: $' ; Tbao2 db 13,10,'Ky tu da nhap : $' ; 2. Thuat giai: ; - Hien thi TBao1 ; - Nhap mot ky tu ; - Dua gia tri vao thanh ghi bl 8
  9. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên ; - Hien thi TBao2 ; - Hien thi KyTu ;==================================================================== =============== .model small .stack 100h .data ; Khai bao cac bien tai day CR EQU 13 LF EQU 10 TBao1 db CR,LF,'Hay nhap mot ky tu: $' TBao2 db CR,LF,'Ky tu da nhap : $' .code main proc ; Dua du lieu vao thanh ghi DS mov ax,@data mov ds,ax ; Hien thi TBao1 mov ah,9 lea dx,TBao1 int 21h ; Nhap vao mot ky tu mov ah,1 int 21h ; Dua ky tu vao thanh ghi bl mov bl,al ; Hien thi TBao2 mov ah,9 lea dx,TBao2 int 21h ; Hien thi KyTu mov ah,2 mov dl,bl int 21h ; Exit to DOS mov ah,4ch int 21h main endp end main 4. Viết chương trình nhập một ký tự và hiển thị ký tự đứng trước, đứng sau theo thứ tự mã ASCII. Kết quả có dạng: Hay nhap mot ky tu: B Ky tu dung truoc : A Ky tu dung sau : C Gỉai Code: ;==================================================================== =============== ; Noi dung: Viet chuong trinh nhap vao mot ky tu va hien thi ky tu dung truoc, ; dung sau theo thu tu ma ASCII. Ket qua co dang: ; Hay nhap mot ky tu: B ; Ky tu dung truoc : A ; Ky tu dung sau :C ; Ten file: bt04.asm 9
  10. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên ; Ngay tao: 17/03/2009 - 08:37 ; Huong dan: ; 1. Khai bao du lieu: ; TBao1 db 13,10,'Hay nhap mot ky tu: $' ; Tbao2 db 13,10,'Ky tu dung truoc : $' ; TBao3 db 13,10,'Ky tu dung sau : $' ; 2. Thuat giai: ; - Hien thi TBao1 ; - Nhap mot ky tu ; - Dua gia tri vao thanh ghi bl ; - Hien thi TBao2 ; - Giam 1 gia tri ; - Hien thi TBao3 ; - Tang 2 gia tri ;==================================================================== =============== .model small .stack 100h .data ; Khai bao cac bien tai day CR EQU 13 LF EQU 10 TBao1 db CR,LF,'Hay nhap mot ky tu: $' TBao2 db CR,LF,'Ky tu dung truoc : $' TBao3 db CR,LF,'Ky tu dung sau : $' .code main proc ; Dua du lieu vao thanh ghi DS mov ax,@data mov ds,ax ; Hien thi TBao1 mov ah,9 lea dx,TBao1 int 21h ; Nhap vao mot ky tu mov ah,1 int 21h ; Dua ky tu vao thanh ghi bl mov bl,al ; Hien thi TBao2 mov ah,9 lea dx,TBao2 int 21h ; Hien ky tu va giam 1 gia tri mov ah,2 mov dl,bl dec dl int 21h ; Hien thi TBao3 mov ah,9 lea dx,TBao3 int 21h ; Hien ky tu va tang 1 gia tri mov ah,2 mov dl,bl inc dl int 21h ; Exit to DOS mov ah,4ch int 21h 10
  11. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên main endp end main 5. Viết chương trình nhập hai ký tự và hiển thị ký tự thứ ba có mã ASCII là tổng của mã hai ký tự đã nhập. Kết quả có dạng: Nhap ky tu thu nhat: 2 Nhap ky tu thu hai : 3 Ky tu tong : e Phần 2 – Lý Thuyết Trong phần này các anh chị sẽ nhận biết kiểu định vị của địa chỉ và giới thiệu các thanh ghi cờ Kiểu định vị hoặc chế độ định vị (addressing mode) là cách thức xác định dữ liệu trong lệnh. Có tất cả 7 chế độ định vị chuẩn, đó là Thanh ghi (register) • Lấy ngay (immediate) • Trực tiếp (direct) • Gían tiếp thanh ghi (register indirect) • Chỉ số (indexed) • Cơ sở (based) • Chỉ số cơ sở (based indexed) • 1. Định vị thanh ghi - Trong chế độ định vị thanh ghi, các tác tố là thanh ghi, tức dữ liệu chứa trong thanh ghi. Khi tác tố là thanh ghi thì lệnh sẽ được thực hiện nhanh hơn vì không mất thời gian truy cập vào bộ nhớ. - Ví dụ: MOV AL,BL ; AL
  12. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên trong lệnh - Ví dụ: MOV [7000h],AX ; chuyển giá trị trong thanh ghi AX vào trong bộ nhớ ở địa chỉ ô là 7000h - Ngoài ra lệnh trên còn có thể hiểu như sau: MOV DS:[7000h],AX ; chuyển giá trị trong thanh ghi AX vào trong bộ nhớ ở địa chỉ ô là 7000h - Theo cách ghi thứ hai thì ta thấy cách ghi giống như cách thể hiện 1 địa chỉ tương đối : DS:[7000h] - Cả hai cách ghi đều như nhau, cách thứ nhất nếu không ghi địa chỉ đoạn nào thì ngầm hiểu là lấy đoạn DS làm chuẩn 4. Định vị gián tiếp thanh ghi - Trong chế độ định vị này, địa chỉ ô của các tác tố chứa trong các thanh ghi BX, BP, SI hoặc DI (địa chỉ đoạn chứa trong DS tương ứng với BX, SI, DI và SS tương ứng với BP). Nói cách khác địa chỉ tác tố không chứa trực tiếp trong lệnh mà gián tiếp thông qua một thanh ghi. - Ví dụ lệnh sau trừ nội dung DX với vùng nhớ có địa chỉ chứa trong DS:BX SUB DX,[BX] SUB DX,BX ; lưu ý này trên sẽ khác với lệnh trên - Vì lệnh đầu tiên lấy dữ liệu từ vùng nhớ (định vị gián tiếp thanh ghi), lệnh thứ hai lấy dữ liệu từ thanh ghi (định vị thanh ghi). - Gỉa sử ta có nội dung các thanh ghi và vùng nhớ như sau: Thanh ghi Nội dung thanh ghi Nội dung vùng nhớ Địa chỉ vùng nhớ BX 1000 1BAC DS:1000 SI 2000 20FE DS:2000 DI 3000 031D DS:3000 Với các lệnh sau, ta được kết quả sau: MOV BX,[BX] ; BX
  13. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên MOV 4[SI],AX MOV [SI]4,AX ADD [DI-6],CX ADD [-6+DI],CX ADD -6[DI],CX ADD [DI]-6,CX MOV [SI+ACCOUNT],AX MOV [ACCOUNT+SI],AX MOV ACCOUNT[SI],AX MOV [SI]ACCOUNT,AX MOV ACCOUNT+SI,AX 6. Định vị cơ sở Cách định vị này tương tự như cách định vị chỉ số, nhưng dùng thanh ghi cơ sở BX hoặc BP thay vì DI hoặc SI. Gỉa sử ta có nội dung các thanh ghi và vùng nhớ như sau: Thanh ghi Nội dung thanh ghi Nội dung vùng nhớ Địa chỉ vùng nhớ BX 2 1084 DS:0002 SI 4 2BAC DS:0004 DI 1 - Với khai báo: ALPHA DW 0123h,0456h,0789h,0ABCh và với các lệnh sau, ta có kết quả: MOV AX,[ALPHA+BX] ; AX
  14. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên - Thanh ghi cờ là một trong các thanh ghi của CPU dài 16 hoặc 32 bit (từ CPU 80386 về sau) ghi nhận các thông tin điều khiển, trạng thái của CPU và kết quả thực hiện lệnh sau cùng. - Mỗi bit gọi là một cờ, cờ có thể có trị 1 (gọi là đặt - set) hoặc 0 (gọi là xoá - clear), 16 bit phần cao dùng cho chế độ bảo vệ, 16 bit phần thấp gồm 2 nhóm: cờ điều khiển và cờ trạng thái. Có 2 dạng cờ: Cờ điều khiển: IF (interrupt enable flag), DF (direction flag) và TF (trap flag) • Cờ trạng thái: CF (carry flag), PF (parity flag), AF (auxiliary flag), ZF (zero flag), SF • (sign flag), OF (overflow flag), NT (nested flag), IOPL (input/output privilege level) - Vị trí của các cờ như sau: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 NT IOPL OF DF IF TF SF ZF AF PF CF - Sau đây là phần diễn giải một số cờ thông dụng. Cờ Đặt Xoá Ý nghĩa OF OV NV Tràn/Không tràn (Overflow/Not overflow) DF DN UP Xuống/Lên (Down/Up) IF EI DI Cho ngắt/Cấm ngắt (Enable/Disable) SF NG PL Âm/Dương (Negative/Plus) ZF ZR NZ Không/Khác không (Zero/Not zero) AF AC NA Gởi phụ/Không gởi phụ (Axiliary Carry/Not Axiliary Carry) PF PE PO Chẵn/Lẻ (Parity Even/Parity Odd) CF CY NC Gởi/Không gởi (Carry Yes/Not Carry) a. Cờ gởi (CF) - Có trị 1 khi có nhớ hoặc mượn từ bit MSB (bit cao nhất của dãy số nhị phân), tức bit 7 hoặc 15 hặc 31 trong phép tính cộng và trừ (còn gọi là tràn không dấu), ngược lại là 0. Cờ này có thể thay đổi theo lệnh dịch và quay. Nói cách khác, cờ CF có 2 giá trị: CF = 1 , khi thực hiện phép tính cộng hay trừ không dấu mà có tràn • CF = 0 , ngược lại • - Ngoài ra ta còn có 3 lệnh liên quan đến cờ CF Lệnh CLC (Clear Carry flag): xoá 0 CF • Lệnh STC (Set Carry flag): đặt 1 cho CF • Lệnh CMC (Complement Carry flag): đảo trị của CF • - Ví dụ: 14
  15. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên CLC MOV BL,0FEh ; BL
  16. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên Phần bài tập của chương này thì gồm có 2 phần: - Phần xác định dạng chế độ định vị của các câu lệnh - Các bài tập xác định cờ Phần 1: Xác định các chế độ định vị của các câu lệnh 1. Xác định kiểu định vị nguồn và đích trong các lệnh sau: a. MOV AX,BX ; b. MOV AH,7 ; c. MOV [DI],AL ; d. MOV AX,[BP] ; e. MOV AL,[SI+6] Gỉai: a. MOV AX,BX ; định vị thanh ghi b. MOV AH,7 ; định vị lấy ngay c. MOV [DI],AL ; định vị gián tiếp thanh ghi d. MOV AX,[BP] ; định vị gián tiếp thanh ghi e. MOV AL,[SI+6] ; định vị chỉ số 2. Gỉa sử AX = 0500h ; BX = 1000h ; SI = 1500h ; DI = 2000h ; [DS] = 0100h ; [DS] = 0150h ; [DS] = 0200h ; [DS] = 0250h ; [DS] = 0300h và BETA là biến từ nằm ở địa chỉ ô 1000h. Trong các lệnh sau đây, nếu hợp lệ (nếu không hợp lệ, giải thích tại sao), hãy cho biết địa chỉ ô của các tác tố nguồn hoặc thanh ghi và kết quả lưu trong tác tố đích. a. MOV DL,SI ; b. MOV DI,[DI] ; c. ADD AX,[SI] ; d. SUB BX,[DI] ; e. LEA BX,BETA[BX] ; f. ADD [SI],[DI] ; g. ADD BH,[BL] ; h. ADD AH,[SI] ; i. MOV AX, [BX+DI+BETA] Gỉai: a. MOV DL,SI ; DL
  17. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên e. MOV AL,[BP+DI]+110b ; định vị chỉ số cơ sở địa chỉ tuyết đối = DS * 16 + BP + DI + 6h = E1BEFh Phần 2: Xác định cờ 1. Cho biết nội dung của tác tố đích và trị cờ CF, SF, ZF, PF và OF sau khi thực hiện các lệnh sau: a. ADD AX,BX ; với AX = 7FFFh và BX = 1 b. SUB AL,BL ; với AL = 1 và BL = FFh c. DEC AL ; với AL = 0 d. NEG AL ; với AL = 7Fh e. XCHG AX,BX ; với AX = 1ABCh và BX = 712Ah f. ADD AL,BL ; với AL = 80h và BL = FFh g. SUB AX,BX ; với AX = 0 và BX = 8000h h. NEG AX ; với AX = 1 Gỉai: a. ADD AX,BX ; với AX = 7FFFh và BX = 1 AX = 0111 1111 1111 1111b BX = 0000 0000 0000 0001b - Cờ CF (cờ gởi, = 1 khi có tràn ngược lại = 0 khi không tràn, đối với số nguyên không dấu) Đối với lệnh ADD AX,BX thì CF = 0 vì không có tràn - Cờ SF (cờ dấu, = 1 khi kết quả âm (bit MSB là 1) ngược lại = 0 khi kết quả dương (bit MSB là 0)) Đối với lệnh ADD AX,BX thì SF = 1 vì kết quả là 1000 0000 0000 0000b (bit MSB là 1) - Cờ ZF (cờ không, = 1 khi kết quả là 0, ngược lại = 0 khi kết quả khác 0) Đối với lệnh ADD AX,BX thì ZF = 0 vì kết quả là một số khác 0 - Cờ PF (cờ chẵn lẽ, = 1 khi tổng số bit 1 là số chẵn, ngược lại = 0 khi tổng số bit 1 là số lẻ)) Đối với lệnh ADD AX,BX thì PF = 0 vì kết quả 1000 0000 0000 0000b có tổng số bit 1 là 1 (là số lẻ) - Cờ OF (cờ tràn, = 1 khi cộng/trừ hai số nguyên cùng dấu mà kết quả cho ra số nguyên khác dấu, ngược lại = 0) Đối với lệnh ADD AX,BX thì OF = 1 vì kết quả 1000 0000 0000 0000b khác dấu Các câu khác các anh chị làm tương tự nhưng nhớ là trước khi xác định cờ thì phải đổi ra số nhị phân sau đó thực hiện phép toán rồi mới xác định cờ. 2. Cho biết kết quả sau khi thực hiện lệnh ADD AX,BX và trạng thái tràn (có dấu hoặc không dấu) có xảy ra không với: a. AX = 512h và BX = 4185h b. AX = FE12h và BX = 1ACBh c. AX = E1E4h và BX = DAB3h d. AX = 7132h và BX = 7000h e. AX = 6389h và BX = 1176h Gỉai: a. ADD AX,BX ; AX = 512h và BX = 4185h Đối với bài này các anh chị làm tương tự như trên nhưng người ta chỉ hỏi 2 cờ CF và OF thôi. 3. Cho biết kết quả sau khi thực hiện lệnh SUB AX,BX và trạng thái tràn (có dấu hoặc 17
  18. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên không dấu) có xảy ra không với: a. AX = 2143h và BX = 1986h b. AX = 81FEh và BX = 1986h c. AX = 19BCh và BX = 81FEh d. AX = 0002h và BX = FE0Fh e. AX = 8BCDh và BX = 71ABh Gỉai: SUB AX,BX ; AX = 2143h và BX = 1986h Đối với bài này các anh chị làm tương tự như trên nhưng người ta chỉ hỏi 2 cờ CF và OF thôi. Phần 3 – Lý Thuyết Trong phần này xin nói về: Các cấu trúc NHẢY và LẶP • Giới thiệu một số lệnh nâng cao • Lập trình hợp ngữ • I. Các cấu trúc NHẢY và LẶP 1. Cấu trúc IF THEN CV1 - Cú pháp: CMP , ; điều kiện so sánh đúng J ; nhảy tới nhãn sai ; thực hiện CV1 ........ : ; thực hiện công việc sai ....... Với J ta cần nhớ 1 vài từ ký hiệu như sau: J : Jump (nhảy) • N : Not (không ...) • Z : cờ ZF; C : cờ CF; O : cờ OF; S : cờ SF; P : cờ PF • A : Above (lớn hơn – so sánh số không dấu) • B : Below (nhỏ hơn – so sánh số không dấu) • G : Greater (lớn hơn – so sánh số có dấu) • L : Less (lớn hơn – so sánh số có dấu) • E : Equal (bằng) • Sau đây là danh sách một số lệnh nhảy được dùng Lệnh nhảy theo kết quả không dấu 18
  19. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên Nhảy nếu dưới/không trên hoặc bằng JB/JNAE CF = 1 Nhảy nếu trên hoặc bằng/không dưới JAE/JNB CF = 0 Nhảy nếu dưới hoặc bằng/không trên JBE/JNA (CF or ZF) = 1 Nhảy nếu trên/không dưới hoặc bằng JA/JNBE (CF or ZF) = 0 Lệnh nhảy theo kết quả có dấu JL/JNGE Nhảy nếu nhỏ hơn/không lớn hơn hoặc bằng (SF or OF) = 1 Nhảy nếu trên lớn hơn hoặc bằng/không nhỏ JGE/JNL (SF or OF) = 0 hơn JLE/JNG Nhảy nếu nhỏ hơn hoặc bằng/không nhỏ hơn ((SF xor OF) or ZF) = 1 JG/JNLE Nhảy nếu lớn hơn/không nhỏ hơn hoặc bằng ((SF xor OF) or ZF) = 0 Lệnh nhảy khác Nhảy nếu bằng/nhảy nếu bằng không JE/JZ ZF = 1 Nhảy nếu không bằng/Nhảy nếu khác không JNE/JNZ ZF = 0 Nhảy nếu có bit kiểm/có bit kiểm chẵn JP/JPE PF = 1 Nhảy nếu không có bit kiểm/có bit lẻ JNP/JPO PF = 0 Nhảy nếu có dấu JS SF = 1 Nhảy nếu không dấu JNS SF = 0 Nhảy nếu tràn JO OF = 1 Nhảy nếu không tràn JNO OF = 0 Nhảy nếu có nhớ JC CF = 1 Nhảy nếu không nhớ JNC CF = 0 - Ví dụ: thanh ghi AL chứa 1 ký tự chữ. Nếu ký tự chữ hoa thì hiển thị - Thuật toán: Nếu AL chứa các giá trị
  20. Trịnh Công Sơn k44dvt01 DHKTCN Thái Nguyên ; thực hiện công việc CV2 ....... : .......... - Ví dụ: một số x Bytes dạng HEX (0 -> 15). Hiển thị giá trị x lên màn hình (Nghĩa trong dạng HEX sử dụng 0 -> 9 và từ 10 -> 15 thì hiển thị A -> F) - Thuật toán: Nếu x
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2