1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

8 276 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 84,14 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các thanh ghi này c ng ch a trong nó thanh ghi 16 bít t ng ng.

Trang 1

CH NG IX: M T S V N 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 ph 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:

1 word 1 word

+ S th hai c t trong m ng word 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 trên có s d ng m t l nh m i (Add with Carry):

ADC < ích>, <Ngu n>

ích>: là m t thanh ghi hay m t ô nh

<Ngu n>: là m t thanh ghi, m t ô nh , ho c m t h ng s

ích>,<Ngu n> 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

Trang 2

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>, <Ngu n>

ích>: là m t thanh ghi hay m t ô nh

<Ngu n>: là m t thanh ghi, m t ô nh , ho c m t h ng s

ích>,<Ngu n> 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

Trang 3

RCL A+2, 1

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

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,75x 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,5x 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 phâ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:

A + 2

CF

Trang 4

0,9x 2 = 1,8 Ph n nguyên = 1, ph n th p phân = 0,8

c 2: 0,8x 2 = 1,6 Ph n nguyên = 1, ph n th p phân = 0,6

c 3: 0,6x 2 = 1,2 Ph n nguyên = 1, ph n th p phân = 0,2

c 4: 0,2x 2 = 0,4 Ph n nguyên = 0, ph n th p phân = 0,4

c 5: 0,4x 2 = 0,8 Ph n nguyên = 0, ph n th p phân = 0,8

c 6: 0,8x 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)

S M c ng có th c vi t là: M = 10,1x 20 = 1,01x 21

= <Ph n nh tr >x 2<Ph n m >

Nh v y ta có th thay i v trí c a d u ph 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,0x 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

Trang 5

+ 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 c d u

ph y luôn là 1)

31 30 23 22 0

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 x22

+ 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 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 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 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0

ng Hex: - 4,9 C0 9C CC CCh

Trên ây là các ví d v bi u di 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 m c 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ý (224 Byte) Tuy nhiên, trong ch th c, do ph i gi tính t ng thích v i 8086 nên nó

Trang 6

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 o v

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 theo 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

Trang 7

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 khác ch 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

• 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

EAX

AX

Trang 8

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 kho 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

Ngày đăng: 21/07/2014, 17:20

TỪ KHÓA LIÊN QUAN

w