Tải bản đầy đủ (.pdf) (37 trang)

Kiến trúc máy tính PHẦN II hợp NGỮ chương 6 NHÓM LỆNH TÍNH TOÁN số học và LUẬN lý

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (254.53 KB, 37 trang )

Chương 6
NHÓM LỆNH TÍNH TOÁN SỐ
HỌC VÀ LuẬN LÝ


Nhóm lệnh tính toán số học
ADD
SUB
INC
DEC
NEG
MUL , IMUL
DIV , IDIV

+
++
--a
*
/


Lệnh ADD
• Dạng lệnh :
ADD
ADD
ADD

reg,reg
mem,reg
reg,mem


ADD
ADD
ADD

• Giải thích :

reg,immed
mem,immed
accum,immed

thđ ← thđ + thn
Cộng toán hạng nguồn vào toán hạng đích. Kết quả cất vào
toán hạng đích.

• Tác động cờ :
à Xem thêm lệnh ADC


Ví dụ
ADD
ADD
ADD
ADD
ADD
ADD
ADD

CX,SI
; CX ← CX + SI
DH,BL

; DH ← DH + BL
[1000h],BX ;[1001h,1000h] ← [1001h,1000h] + BX
[2000h],CL ; [2000h] ← [2000h] + CL
AL,[0000h] ; AL ← AL + [0000h]
BYTE PTR [SI+8],5 ; [SI+8] ← [SI+8] + 05h
WORD PTR [SI+8],5


Lệnh SUB
• Dạng lệnh :
SUB
SUB
SUB

reg,reg
mem,reg
reg,mem

SUB
SUB
SUB

reg,immed
mem,immed
accum,immed

• Giải thích : thđ ← thđ - thn
Trừ toán hạng đích cho toán hạng nguồn. Kết
quả cất vào toán hạng đích.
• Tác động cờ :

à Xem thêm SBB


Ví dụ
; DL



DL - AL

SUB CX,[DI]

; CX



CX - [DI+1,DI]

SUB BP,4

; BP



BP - 4

SUB

DL,AL



Lệnh INC
• Dạng lệnh :
INC reg

INC

mem

• Giải thích : thđ ← thđ + 1
cộng 1 vào toán hạng đích nhưng không ảnh hưởng
cờ nhớ.

• Tác động cờ :
• Ví dụ :
INC
INC

CH
WORD PTR [1000h]


Lệnh DEC
• Dạng lệnh :
DEC reg

DEC

mem


• Giải thích : thđ ← thđ - 1
trừ 1 vào toán hạng đích nhưng không ảnh hưởng cờ
nhớ.

• Tác động cờ :
• Ví dụ :
DEC
DEC

AX
Byte PTR ES:[1000h]


Lệnh NEG
• Dạng lệnh :
NEG reg

NEG

• Giải thích : thđ ← bù 2 ( thđ)
• Tác động cờ :
• Ví dụ :
NEG
NEG

AX
Byte PTR ES:[SI]

mem



Lệnh MUL
• Dạng lệnh :
MUL

reg

MUL

mem

• Giải thích : nhân số không dấu
– Trường hợp toán hạng nguồn là 8 bit thì :
AX ← AL * thn8
– Trường hợp toán hạng nguồn là 16 bit thì :
{DX AX} ← AX * thn16

• Tác động cờ :


Ví dụ
• Nếu AL=5, CH=4, sau khi thực hiện lệnh
MUL CH
ta có AX = AL*CH = 0014h.
• Nếu AX=500h, [1001h,1000h]=0401h, sau khi
thực hiện lệnh
MUL WORD PTR [1000h]
ta có {DXAX} = AX * [1001h,1000h]
= 500h * 401h = 00140500h
Nghĩa là DX=0014h và AX=0500h.



Lệnh IMUL
• Tương tự lệnh MUL, nhưng xử lý trên số có
dấu


Lệnh DIV
• Dạng lệnh :
DIV reg

DIV

mem

• Giải thích : chia hai số không dấu
– Nếu toán hạng nguồn là 8 bit thì :
AL ← (AX / thn8)
AH ← số dư của (AX / thn8)
– Toán hạng nguồn 16 bit thì :
AX ← (DXAX / thn16)
DX ← số dư của (DXAX / thn16)

• Tác động cờ :


Lệnh IDIV
• Tương tự lệnh DIV nhưng làm việc trên số có
dấu



Nhóm lệnh xử lý logic
AND
OR
XOR
NOT

SHL
SHR
SAL
SAR

ROL
ROR
RCL
RCR


Lệnh AND
• Dạng lệnh :
AND
AND
AND

reg,reg
mem,reg
reg,mem

AND
AND

AND

reg,immed
mem,immed
accum,immed

• Giải thích : thđ ← thđ AND thn.
• Tác động cờ:


Ví dụ:
MOV AL, 'a'
AND AL, 11011111b
01100001
11011111
-------01000001

; AL = 01100001b
; AL = 01000001b ('A')
1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0


Lệnh OR
• Dạng lệnh :
OR
OR
OR


reg,reg
mem,reg
reg,mem

OR
OR
OR

reg,immed
mem,immed
accum,immed

• Giải thích : thđ ← thđ OR thn.
• Tác động cờ :


Ví dụ:
MOV AL, 'A'
OR AL, 00100000b
01000001
00100000
-------01100001

; AL = 01000001b
; AL = 01100001b ('a')
1 OR 1 = 1
1 OR 0 = 1
0 OR 1 = 1
0 OR 0 = 0



Lệnh XOR
• Dạng lệnh :
XOR reg,reg
XOR mem,reg
XOR reg,mem

XOR reg,immed
XOR mem,immed
XOR accum,immed

• Giải thích : thđ ← thđ XOR thn.
• Tác động cờ:


Ví dụ:
MOV AL, 00000111b
XOR AL, 00000010b ; AL = 00000101b
00000111
00000010
-------00000101

1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0


Lệnh NOT

• Dạng lệnh :
NOT

reg

NOT

mem

• Giải thích : thđ ← đảo từng bit ( thđ )
• Tác động cờ : (không thay đổi)

• Ví dụ:
MOV AL, 00011011b
NOT AL
; AL = 11100100b


Lệnh SHL/SAL
• Dạng lệnh :
SHL
SHL

reg,1
reg,CL

• Giải thích :

SHL
SHL


mem,1
mem,CL

Dịch trái. Dạng SHL reg,1 dùng
để dịch trái 1 bit. Dạng SHL reg,CL dùng
để dịch trái nhiều bit. Lúc đó thanh ghi
CL chứa số bit cần dịch.

• Tác động cờ :


Ví dụ
MOV AL, 11100000b
SHL AL, 1
; AL=11000000b
; CF=1


Bài tập
1. Viết đoạn chương trình hợp ngữ tính tổng:
s = 1 + 2+ 3+ … + n
trong đó, giá trị n chứa sẳn trong thanh ghi AX
kết quả tính được cất vào thanh ghi DX
(giả sử n đủ nhỏ để tổng tính được không tràn)
n

nếu n lẻ

BTVN2: Viết chương trình tính s=1+3+5+…+

n -1 nếu n chẳn


×