intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng hợp ngữ - Chương 9

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:8

85
lượt xem
19
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo Bài giảng hợp ngữ gồm 9 chương - Chương 9 Một số vấn đề mở rộng

Chủ đề:
Lưu

Nội dung Text: Bài giảng hợp ngữ - Chương 9

  1. Bài gi ng h p ng Ch ng IX: M t s v n m r ng CH NG IX: M T S VN M R NG 9.1 S nguyên 32 bit Do b vi x lý 8086 có các thanh ghi dài 16 bít nên các l nh c a nó ch thao tác trên các toán h ng nh h n ho c b ng 16 bít. u này làm h n ch p h m vi tính toán (t 0 65535 i v i s không d u và t -32768 32767 i v i s có d u). Mu n t ính toán trên ph m vi l n h n thì ph i t ng c dài dãy bít. Nh v y c n ng dài c a các thanh ghi ( u này là r t khó kh n do h n ch công ngh vào th i m ó). M t gi i pháp khác là s d ng nh ng thanh ghi có s n ghép l i thành m t dãy bít dài h n. S nguyên 32 bít có ph m vi t 0 4294967295 i v i s không d u và t - 2147483648 2147483647 i v i s có d u. tính toán trên các s lo i này c n tách chúng làm hai ph n: 16 bít cao và 16 bít th p. Quá trình tính toán s c th c hi n trên ng ph n, có s hi u ch nh k t qu nh m t s l nh c bi t. 9.1.1 Các phép toán C ng và Tr a) Phép c ng Ví d : Xét hai s nguyên 32 bit: + S th nh t c t trong m ng word A: A+2 A 1 word 1 word + S th hai c t trong m ng word B: B+2 B 1 word 1 word Hãy c ng hai s : A+2:A và B+2:B Gi i: u tiên ph i c ng 16 bít th p, sau ó m i c ng 16 bít cao: MOV AX, B MOV BX, B+2 ADD A, AX ;C ng 16 bít th p c a s th hai vào A ADC A+2, BX ;C ng 16 bít cao c a s th hai và c CF vào A+2 K t qu : A+2:A ch a t ng hai s . Gi i thích: Ví d t rên có s d ng m t l nh m i (Add with Carry): ADC < ích>, ích>: là m t t hanh ghi hay m t ô nh : là m t t hanh ghi, m t ô nh , ho c m t h ng s ích>, không ng th i là hai ô nh . nh ADC s th c hi n phép c ng: ích + Ngu n + CF, k t qu ch a trong ích. 68
  2. Bài gi ng h p ng Ch ng IX: M t s v n m r ng Nh v y, n u phép c ng 16 bít th p c a hai s có nh (CF = 1) thì phép c ng 16 bít cao (b ng l nh ADC) s c ng c bít nh này vào t ng. b) Phép tr Ví d : Th c hi n phép tr gi a hai s nguyên 32 bit: A+2:A và B+2:B Gi i: u tiên ph i tr 16 bít th p, sau ó m i tr 16 bít cao: MOV AX, B MOV BX, B+2 SUB A, AX ;Tr 16 bít th p SBB A+2, BX ;Tr A+2 cho BX và CF K t qu : A+2:A ch a hi u hai s . Gi i thích: Ví d trên có s d ng m t l nh m i (Subtract with Borrow): SBB < ích>, ích>: là m t t hanh ghi hay m t ô nh : là m t t hanh ghi, m t ô nh , ho c m t h ng s ích>, không ng th i là hai ô nh . nh SBB s th c hi n phép tr : ích - Ngu n - CF, k t qu ch a trong ích. Nh v y, n u phép tr 16 bít th p c a hai s có vay (CF = 1) thì phép tr 16 bít cao (b ng l nh SBB) s tr thêm c bít ã vay này. 9.1.2 Các phép Logic Ví d : Th c hi n phép ph nh s nguyên 32 bit sau: A+2:A Gi i: Vi c th c hi n phép ph nh ( o bít) i v i s 32 bít r t n gi n vì không c n thêm l nh nào hi u ch nh k t qu : NOT A ; o 16 bít th p NOT A+2 ; o 16 bít cao Nói chung, các phép logic (And, Or, Not, Xor) v n có th áp d ng bình th ng trên a th p và n a cao c a s 32 bít. 9.1.3 Các phép toán D ch a) D ch trái Ví d : Th c hi n phép d ch trái s nguyên 32 bit sau: A+2:A Gi i: Các b c th c hi n: + u tiên c n d ch trái 16 bít th p + Sau ó quay trái 16 bít cao (quay qua c CF) SHL A, 1 69
  3. Bài gi ng h p ng Ch ng IX: M t s v n m r ng RCL A+2, 1 CF A A+2 b) D ch ph i Ví d : Th c hi n phép d ch ph i s nguyên 32 bit sau: A+2:A Gi i: Trình t d ch ng c l i so v i ví d ph n a: + u tiên c n d ch ph i 16 bít cao + Sau ó quay ph i 16 bít th p (quay qua c CF) SHR A+2, 1 RCR A, 1 A+2 A CF 9.2 S th c d u ph y ng 9.2.1 Bi u di n s th c d i d ng nh phân Ví d 1: Chuy n s 0,75 sang d ng nh phân. Gi i: Các b c ti n hành nh sau: c 1: L y ph n th p phân nhân v i 2: 0,75 x 2 = 1,5 Thu c ph n nguyên = 1, ph n th p phân = 0,5 c 2: L y ph n th p phân c a k t qu b c trên nhân v i 2: 0,5 x 2 = 1,0 Thu c ph n nguyên = 1, ph n th p phân = 0 Quá trình trên c l p i l p l i cho t i khi ph n th p phân = 0 thì d ng l i. t qu : Vi t l n l t các ph n nguyên thu c trên vào sau d u ph y c a s nh p hân: (0,75)10 = (0,11)2 Ví d 2: Chuy n s 4,9 sang d ng nh phân. Gi i: S trên có ph n nguyên = 4 và ph n th p phân = 0,9. Các b c ti n hành nh sau: • Chuy n ph n nguyên sang d ng nh phân: (4)10 = (100)2 • Chuy n ph n th p phân sang d ng nh phân (gi ng nh ví d 1): c 1: L y ph n th p phân nhân v i 2: 70
  4. Bài gi ng h p ng Ch ng IX: M t s v n m r ng 0,9 x 2 = 1,8 Ph n nguyên = 1, ph n th p phân = 0,8 c 2: 0,8 x 2 = 1,6 Ph n nguyên = 1, ph n th p phân = 0,6 c 3: 0,6 x 2 = 1,2 Ph n nguyên = 1, ph n th p phân = 0,2 c 4: 0,2 x 2 = 0,4 Ph n nguyên = 0, ph n th p phân = 0,4 c 5: 0,4 x 2 = 0,8 Ph n nguyên = 0, ph n th p phân = 0,8 c 6: 0,8 x 2 = 1,6 Ph n nguyên = 1, ph n th p phân = 0,6 ... Quá trình này s không bao gi k t thúc vì ph n th p phân không th b ng 0. Do ó ta ch có th thu c m t s nh phân x p x v i s th p phân ã cho. t qu : (4,9)10 = (100,11100 1100 1100...)2 9.2.2 Bi u di n s th c d u ph y ng Ví d 1: Xét s th c d ng nh phân sau: M = (10,1)2 (b ng 2,5 trong h th p phân) c vi t là: M = 10,1 x 20 = 1,01 x 21 S M c ng có th = x 2 Nh v y ta có th thay i v trí c a d u p h y mà giá tr c a s th c v n gi nguyên ng cách u ch nh ph n m và ph n nh tr . • Ph n nh tr (Mantissa): th ng nh t trong cách bi u di n, ph n nh tr c a các s khác 0 th ng ph i tho mãn u ki n sau: 1 Mantissa < 2 Ph n nh tr tho mãn u ki n trên c g i là ph n nh tr ã c chu n hoá. • Ph n m (Exponent): Trên th c t ph n m có th là s âm ho c s d ng. Vi c bi u di n s m âm là ph c t p nên ng i ta th ng c ng thêm m t giá tr (g i là Bias) vào ph n m nó luôn là s d ng. Bias c l a ch n theo quy t c sau: N u dài dãy bít bi u di n ph n m là N thì Bias = 2N – 1 - 1 (N u N = 8 thì Bias = 27 – 1 = 127) Ví d 2: Xét s th c d ng nh phân sau: M = 0,0001b Hãy xác nh ph n nh tr và ph n m c a M sau khi chu n hoá. Gi i: M = 0,0001b = 1,0 x 2-4 Mantissa = 1,0 Gi s dùng 8 bít bi u di n ph n m : Bias = 127 Exponent = -4 + 127 =123 v th c 32 bít (Short Real): Ta s t ìm hi u cách th c bi u di n m t s th c trong máy tính b i m t dãy 32 bít. Dãy bít ó c chia làm 3 ph n: + Ph n d u (Sign): Chi m 1 bít, b ng 1 n u d u âm, b ng 0 n u d u d ng. + Ph n m : Dài 8 bít 71
  5. Bài gi ng h p ng Ch ng IX: M t s v n m r ng + Ph n nh tr : Dài 23 bít (ph n nh tr ch l y các bít n m sau d u ph y, vì tr cd u ph y luôn là 1). 31 30 23 22 0 S Exponent Mantissa Ví d 1: Chuy n s 4,9 sang d ng ShortReal. Gi i: (4,9)10 = (100,11100 1100 1100...)2 Chu n hoá: 4,9 = 1,0011100 1100 1100...x 22 + S = 0 (d u d ng) + Mantissa = 0011100 1100 1100... (23 bít) + Exponent = 2 + 127 = 129 = 1000 0001b S th c d ng ShortReal: 31 30 23 22 0 0 1000 0001 001 1100 1100 1100 1100 1100 Hay vi t d i d ng Hex: 4,9 40 9C CC CCh Ví d 2: Chuy n s - 4,9 sang d ng ShortReal. Gi i: Cách làm t ng t ví d 1, ch khác bít d u: S = 1 (d u âm) S th c d ng ShortReal: 31 30 23 22 0 1 1000 0001 001 1100 1100 1100 1100 1100 ng Hex: - 4,9 C0 9C CC CCh Trên ây là các ví d v bi u d i n s th c b ng 32 bít nh phân trong máy tính. Có nhi u ki u s th c khác nhau ng v i các dài dãy bít khác nhau, dãy bít càng dài thì ph m vi bi u di n càng l n. 9.3 B vi x lý 80286 9.3.1 Các c tr ng 80286 c thi t k có th làm vi c hai ch : Ch th c (Real Mode) và ch b o v (Protected Mode). Trong ch th c, 80286 k th a c các c mc a 8086, ngoài ra nó còn có thêm m t s l nh m i (Các l nh m r ng - Extended Instruction). Trong ch b o v , 80286 có kh n ng làm vi c a nhi m (Multitasking) và có th qu n lý b nh theo a ch o (Virtual Address). 80286 là b vi x lý 16 bít. Nó có các thanh ghi dài 16 bít t ng t 8086, nh ng s ng bus a ch l n h n (24 bít), do ó nó có th a ch hoá c 16 MB b nh v t lý 24 (2 Byte). Tuy nhiên, trong ch th c, do ph i gi t ính t ng thích v i 8086 nên nó 72
  6. Bài gi ng h p ng Ch ng IX: M t s v n m r ng ng ch qu n lý c kho ng 1MB b nh . Mu n s d ng toàn b không gian nh 16 MB thì ph i chuy n sang ch b ov . 9.3.2 M t s l nh m r ng c a 80286 a) Push và Pop • 80286 cho phép c t tr c ti p m t h ng s vào ng n x p. Ví d : PUSH 25 ;C t s 25 vào ng n x p • t các thanh ghi th ng dùng vào ng n x p b ng l nh: PUSHA ;Push All Register Các thanh ghi s c c t vào ng n x p t heo trình t sau: AX, CX, DX, BX, SP, BP, SI, DI. Ng c l i, mu n khôi ph c giá tr c a các thanh ghi trên thì dùng l nh: POPA ;Pop All Register Các thanh ghi s c l y ra kh i ng n x p theo trình t :DI, SI, BP, SP, BX, DX, CX, AX. b) L nh nhân 80386 cung c p ba d ng l nh nhân m i: ng 1: IMUL reg16, immed ng 2: IMUL reg16, reg16, immed ng 3: IMUL reg16, mem16, immed Trong ó: + reg16: là m t thanh ghi 16 bít + immed: là m t h ng s + mem16: là m t bi n ki u Word Toán h ng 1 (reg16) s là n i ch a k t qu phép nhân. N u t ích s v t quá ph m vi a reg16 thì các c CF và OF = 1. Ví d : IMUL BX, 15 ; Nhân BX v i 15, k t qu ch a trong BX IMUL AX, BX, 15 ; Nhân BX v i 15, k t qu ch a trong AX IMUL AX, A, 15 ; Nhân bi n A v i 15, k t qu ch a trong AX ; (bi n A có ki u Word) c) L nh d ch và quay i v i 8086, khi mu n d ch hay quay toán h ng ích nhi u l n thì s l n th c hi n ph i t vào thanh ghi CL (xem ch ng IV). Ví d : MOV CL, 3 SHL AX, CL ;D ch các bít c a thanh ghi AX sang trái 3 l n 73
  7. Bài gi ng h p ng Ch ng IX: M t s v n m r ng B vi x lý 80286 cho phép vi t tr c ti p s l n d ch (hay quay) trong l nh, không c n dùng t i CL. Ví d : SHL AX, 3 ;D ch các bít c a thanh ghi AX sang trái 3 l n v Chú ý: N u trong ch ng trình có s d ng các l nh m r ng c a 80286 thì u ch ng trình ph i có khai báo .286 TITLE VI DU .MODEL SMALL .286 ;Khai báo s d ng l nh m r ng .STACK 100H .CODE ... 9.4 Các b vi x lý 80386 và 80486 80386 và 80486 u là các b vi x lý 32 bít, trong ó các thanh ghi công d ng chung, các thanh ghi con tr và và ch s , thanh ghi c dài 32 bít, còn các thanh ghi n dài 16 bít. V c b n thì hai b vi x lý này gi ng nhau, ch k hác c h 80486 có thêm m ch x lý d u ph y ng. Do ó các n i dung trình bày v 80386 d i ây c ng úng cho 80486. • Các thanh ghi công d ng chung: Có 4 thanh ghi dài 32 bít là EAX, EBX, ECX, EDX. m b o tính t ng thích v i các b vi x lý tr c ó, các thanh ghi này ch a trong nó thanh ghi 16 bít t ng ng c a 8086. Ví d : 16 bít th p c a thanh ghi EAX chính là thanh ghi AX. EAX AX AH AL • Các thanh ghi con tr , ch s : Có 5 thanh ghi dài 32 bít là ESI, EDI, ESP, EBP, EIP. Các thanh ghi này c ng ch a trong nó thanh ghi 16 bít t ng ng. • Các thanh ghi n: Có 6 thanh ghi n dài 16 bít là CS, DS, ES, SS, FS, GS. Trong ó, hai thanh ghi c b xung thêm là FS và GS dùng thao tác v i n d li u. • Thanh ghi c EFLAGS: Thanh ghi này dài 32 bít, 16 bít th p c a nó chính là thanh ghi c 16 bit FLAGS. 74
  8. Bài gi ng h p ng Ch ng IX: M t s v n m r ng V i cách t ch c các thanh ghi nh trên, t t c các ch ng trình vi t cho 8086 u có th ch y trên 80386. B vi x lý 80386 s d ng bus a ch 32 bit, do ó nó có th a ch hoá c 4 GB nh v t lý (232 Byte). Tuy nhiên, trong ch th c nó c ng ch s d ng c k ho ng 1MB ( t ng thích v i 8086). v Chú ý: Mu n l p trình v i 80386 và s d ng các thanh ghi 32 bit thì u ch ng trình ph i có khai báo .386 TITLE VI DU .MODEL SMALL .386 ;Khai báo s d ng các l nh c a 80386 .STACK 100H .CODE ... 75
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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