Thứ Sáu, 8 tháng 1, 2010

Lap trinh DEBUG


PHAn II.2. Nhóm lnh s hc (là nhóm lnh có nh hưởng đến c).
Các lnh s hack boa gem bn phép tính s hc cơ bn là cng, tr , nhân, chia và đo du toán hng.

ADD/SUB Dng tng quát ca các lnh cng (add) và tr (subtract) là:
ADD đích, ngun
SUB đích, ngun
Mô t: ADD: Đích  Đích + Ngun¬
SUB : Đích  Đích -Ngun¬
trong đó các toán hng đích, ngun có th tìm được theo các đa ch khác nhau, nhưng phi cha d liu có cùng đ dài và không được phép đng thi là hai ô nh và cũng không được là thanh ghi đon.
Bng 4-4 tóm tt các loi khác nhau ca các toán hng đích và ngun dùng trong các lnh cng và tr:
Bng 4-4. các dng toán hng trong lnh ADD/SUB:

Đích (nơi đến) Ngun (gc)
Thanh ghi Thanh ghi
Thanh ghi B nh
B nh Thanh ghi
B nh Tc thi (hng s)
Thanh ghi Tc thi(hng s)

Ví d 1:
ADD AX, BX ;  AX+BX¬AX
ADD AL, 74H ;  AX+ 74H¬AX
SUB CL, AL  CL - AL¬; CL
SUB AX, 0405H  AX - 0405H.¬; AX
Ví d 2: Viết đon chương trình ngôn ng assembly đ cng 5H vi 3H, dùng các thanh ghi AL, BL.
MOV AL, 05H  05H¬; AL
MOV BL, 03H  03H¬; BL
ADD AL, BL  05H+03H =08H¬; AL
MOV 100H, AL ; Di chuyn kết qu t AL vào v trí nh DS:100H.

MUL/DIV Dng tng quát ca lnh nhân (multiply, MUL) và chia (divide, DIV) là:
MUL s nhân ngun
DIV s chia ngun
trong đó s nhân ngun (toán hng gc) có th tìm được theo các chế đ đa ch khác nhau. Khi dùng lnh nhân, s được nhân phi được chuyn vào thanh ghi AX hoc AL. Còn s nhân thì có th chuyn vào thanh ghi khác bt kỳ hoc mt đa ch nh.
Ví d 2:
MUL BX ; s nhân nm trong thanh ghi BX
MUL MEM1 ; s nhân nm trong đa ch nh mang nhãn MEM1
Khi hai byte nhân vi nhau thì kết qu được gi lưu vào thanh ghi AX.
Ví d 3. Viết đon chương trình nhân 5H vi 3H, dùng thanh ghi CL.
MOV AL, 05H  05H (s được nhân)¬; AL
MOV CL, 03H  03H (s nhân)¬; CL
MUL CL  0FH (kết qu)¬; AL
MOV MEM1, AL ; chuyn kết qu (0FH)
; t AL vào v trí nh có nhãn MEM1.
Khi nhân hai li (16 bit) vi nhau thì s được nhân phi chuyn vào thanh ghi AX, còn s nhân có th trong mởột thanh ghi khác bt kỳ hoc trong v trí nh 16 bite. kết qu s là con s 32 bit (hoc hai li) và được cha trong các thanh ghi DX và AX. Li có trng s ln s trong thanh ghi DX và li có trng s nh sỏẽ trong thanh ghi AX.
Ví d 4. Viết đon chương trình đ nhân 3A62H vi 2B14H.
MOV AX, 3A62H  ;3A62H= AX
MOV CX, 2B14H  ;2B14H= CX
MUL CX  tích = 289C ;63A8H=DXAX
Các lnh chia, v cơ bn, cũng ging như các lnh nhân. Trong phép chia c byte, s chia là mt byte có th ểở trong mt thanh ghi hoc mt v trí nh. S b chia phi là mt s không du 16 bit cha trong thanh ghi AX. Kết qu thương s s trong thanh ghi AL, còn s dư thì trong thanh ghi AH. Đi vi phépchia c li thì s chia 16 bit có th đt trong thanh ghi hoc mt v trí nh. Còn s b chia phi là mt s không du 32 bit được đt trong các thanh ghi DX và AX. Thanh ghi DX s gi li có trng s cao, thanh ghi AX s gi li có trng s thp. Kết qu thương đt trong thanh ghi AX, còn s dư đt trong thanh ghi DX.
Ví d 5: Viết đon chương trình đ chia 6H cho 3H, dùng thanh ghi CL. MOV AX, 0006H  6H¬; AX
MOV CL, 03H  ;3H= CL
DIV CL  00H (s dư), 02H (thương s)= AHAL
Chú ý: 6H được đưa vào thành 0006H đ lp đy toàn b thanh ghi AX. Như vy các byte trng s cao ca AX s b xoá đ tránh b li.
Ví d 6: Viết đon chương trình đ chia 1A034H cho 1002H, dùng thanh ghi BX
MOV AX, 0A034H  0A034H¬; AX
MOV DX, 0001H  0001H¬; DX
MOV BX, 1002H  1002H¬; BX
DIV BX  00H (s dư)1AH (thương s)¬; DXAX
INC/DEC Đây là lnh tăng (increment) và gim (decrement). Lnh tăng s cng thêm mt đơn v vào toán hng, còn lnh gim s tr mt đơn v vào toán hng. Các lnh này rt cn đi vi thao tác đếm. Dng tng quát ca các lnh INC và DEC là:
INC đích  Đích +1¬Mô t: Đích
DEC đích  Đích -1¬Mô t: Đích
Toán hng đích có th là mt thanh ghi hoc mt v trí nh bt kỳ, có th là 1 li 16 bit hoc 1 byte; có th tìm đểược theo các chế đ đa ch khác nhau.
Chú ý:
- Trong lnh tăng, nếu Đích = FFH (hoc FFFFH) thì Đích + 1 = 00H (hoc 0000H) mà không nh hưởng đến c nh. Lnh này cho kết qu tương đương như lnh ADD Đích, 1 nhưng chy nhanh hơn.
- Trong lnh gim, nếu đích là 00H (hoc 0000H) thì Đích -1 = FFH (hoc FFFFH) mà không nh hưởng đến c nh CF. Lnh này cho kết qu tương đương vi lnh SUB Đích, 1 nhưng chy nhanh hơn.
NEG- Negative a Operand (ly bù 2 ca mt toán hng hay đo du toán hng).
Viết lnh: NEG Đích
Ví d:
NEG AH  0 - (AH)¬; AH
NEG BYTE PTR[BX] ; ly bù 2 ca ô nh do BX ch ra trong DS


Không có nhận xét nào:

Đăng nhận xét