1. Trang chủ
  2. » Công Nghệ Thông Tin

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ý

37 544 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 254,53 KB

Nội dung

Chương 6 NHÓM LỆNH TÍNH TOÁN SỐHỌC VÀ LuẬN LÝ... Lệnh IMUL• Tương tự lệnh MUL, nhưng xử lý trên số códấu... Lệnh IDIV• Tương tự lệnh DIV nhưng làm việc trên số códấu... Dạng SHL reg,CL d

Trang 1

Chương 6 NHÓM LỆNH TÍNH TOÁN SỐ

HỌC VÀ LuẬN LÝ

Trang 2

*/

Trang 3

Lệnh ADD

• Dạng lệnh :

Trang 4

ADD WORD PTR [SI+8],5

Trang 5

Lệnh SUB

• Dạng lệnh :

Trang 6

Ví dụ

Trang 10

Lệnh MUL

• Dạng lệnh :

• 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ờ :

Trang 12

Lệnh IMUL

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

Trang 13

Lệnh DIV

• Dạng lệnh :

• 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ờ :

Trang 14

Lệnh IDIV

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

Trang 15

SHLSHRSALSAR

Trang 16

Lệnh AND

• Dạng lệnh :

• Giải thích : thđ ← thđ AND thn

• Tác động cờ:

Trang 17

Ví dụ:

MOV AL, 'a' ; AL = 01100001b

AND AL, 11011111b ; AL = 01000001b ('A')

Trang 20

Lệnh XOR

• Dạng lệnh :

XOR mem,reg XOR mem,immed

XOR reg,mem XOR accum,immed

• Giải thích : thđ ← thđ XOR thn

• Tác động cờ:

Trang 22

Lệnh NOT

• Dạng lệnh :

• 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

Trang 23

Lệnh SHL/SAL

• Dạng lệnh :

• Giải thích : 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

• Tác động cờ :

Trang 24

Ví dụ

MOV AL, 11100000b

SHL AL, 1 ; AL=11000000b

; CF=1

Trang 25

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)

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

n nếu n lẻ

n -1 nếu n chẳn

Trang 27

Bài tập (t.t.)

BTVN: Viết chương trình tính a n , với a chứa trong AL,

n chứa trong AH, kết quả chứa vào DX

Trang 28

Bài tập (t.t.)

Viết chương trình con:

3 Đếm số bit 1 của giá trị 16bit nằm trong thanh ghi AX, kết quả chứa vào DL

4 Tính tổng các chữ số (ở hệ 10) của 1 số 16 bit chứa trong thanh ghi AX, kết quả chứa vào DL

Trang 30

Chương trình xuất giá trị số

nguyên 16 bit hệ 10

• Input: AX chứa giá trị cần xuất

• Giải thuật:

Chia liên tiếp cho 10 để lấy số dư

In ra màn hình các số dư theo thứ tự ngược

Trang 31

Chia liên tiếp cho 10

Stack

1 5 6 2

Trang 32

xuatso proc

mov bx,10 ; chia cho 10 mov cx,0 ; tính số lần lặp

chia:

mov dx,0 ; xóa dx đi

div bx ;Chia [DX|AX] cho 10,

;thương trong AX, dư trong DX

push dx ; cất phần dư

inc cx ;tăng lến lần lặp

cmp ax,0 jne chia xuat:

pop dx add dl,'0' mov ah,2 int 21h loop xuat

ret xuatso endp

Các thanh ghi nào thay đổi?

Trang 33

xuatso proc

mov bx,10 ; chia cho 10 mov cx,0 ; tính số lần lặp

chia:

mov dx,0 ; xóa dx đi

div bx ;Chia [DX|AX ] cho 10,

;thương trong AX, dư trong DX

push dx ; cất phần dư

inc cx ;tăng đếm

cmp ax,0 jne chia xuat:

pop dx add dl,'0' mov ah,2 int 21h loop xuat

ret xuatso endp

Các thanh ghi thay đổi trong CTC:

pop DX pop CX pop BX pop AX

Trang 35

• Ban đầu AX= 0

‘1562’ è AX = AX*10 + 1 = 1

‘1562’ è AX = AX*10 + 5 = 15

‘1562’ è AX = AX*10 + 6 = 156

‘1562’ è AX = AX*10 + 2 = 1562

Trang 36

nhapso proc

;

mov ah,0ah mov dx,offset buffer push cs ;Cho DS tr ỏ đến

pop ds ; đoạn code

int 21h mov cl,[buffer+1] ;l ấy số chữ số vừa nhập

mov ch,0 mov si,offset buffer +2 ;v ị trí chữ số đầu tiên

mov ax,0 ;xóa ax

mov bx,10

nhan : mul bx

mov dl,[si]

sub dl,'0' mov dh,0 add ax,dx inc si

Trang 37

nhapso proc

mov ah,0ah mov dx,offset buffer push cs

pop ds int 21h mov cl,[buffer+1]

mov ch,0 mov si,offset buffer +2 mov ax,0

mov bx,10 nhan: mul bx

mov dl,[si]

sub dl,'0' mov dh,0 add ax,dx inc si

loop nhan

ret buffer db 6,?,6 dup('$')

push bx push cx push dx push si push ds

pop ds pop si pop dx pop cx pop bx

Ngày đăng: 03/12/2015, 15:45

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w