8086/8088和ARM核汇编语言程序设计
第10章数据运算程序设计
5/30/2018
1
第10章数据运算程序设计
多精度的加减运算
乘除运算
第10章数据运算程序设计
5/30/2018
2
第10章数据运算程序设计
本节主要介绍多字节无符号二进制数的加减法运算程序设计,特别要注意运算中加法进位和减法借位问题。
二进制加减运算
多精度的加减运算
5/30/2018
3
第10章数据运算程序设计
加法运算
多精度的加减运算
二进制加减运算
编制完成两个无符号的四字节二进制数的加法运算。
如 8090H+8182H
8090H 分解为字节加 80H 90H
+ 8182H + 81H 82H
10212H + 1H (进1)12H
(进1)02H
把以上的字节看成为字,四字节可分为两个字的加法。
由此可推出两个M个字节数的加等于作M次字节加或M/2次字加
5/30/2018
4
第10章数据运算程序设计
多精度的加减运算
二进制加减运算
分解为寄存器加 al al
+ [bx] [bx]
+ cy (进cf)al
(进cf)al
5/30/2018
5
第10章数据运算程序设计
汇编程序
多精度的加减运算
二进制加减运算
name exp10-
data segment
addr1 db 6ch, 8ah, 3bh, 49h
addr2 db 3eh, 5bh, 6fh, 7dh
result db 0,0,0,0
len equ 4
data ends
5/30/2018
6
第10章数据运算程序设计
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov si,offset addr1 ;si←取被加数addr1地址偏移量
mov bx,offset addr2 ;bx←取加数addr2地址偏移量
mov di,offset result ;di←取和result地址偏移量
mov cl,len ;cl←字节数
clc ;清进位标志
skip: mov al,[si]
adc al,[bx] ;完成字节加法
mov [di],al ;保存求和结果
inc si ;修改地址
inc bx
inc di
dec cl ;字节计数
jnz skip
mov ax,4c00h ;返回DOS
int 21h
code ends
end start
多精度的加减运算
二进制加减运算
5/30/2018
7
第10章数据运算程序设计
多精度的加减运算
二进制加减运算
减法运算
分解为寄存器减 al al
- [bx] [bx]
- cf (借cf)al
(借cf)al
5/30/2018
8
第10章数据运算程序设计
name exp10-
data segment
addr1 dw 8a6ch, 493bh ;定义4字节被减数
addr2 dw 5b3eh, 7d6fh ;定义4字节减数
result dw 2 dup(?) ;定义存放差的单元
len dw 0002h ;定义循环计数值为2个字
data ends
多精度的加减运算
二进制加减运算
5/30/2018
9
第10章数据运算程序设计
多精度的加减运算
二进制加减运算
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov si,offset addr1 ;si←取被减数addr1地址偏移量
mov bx,offset addr2 ;bx←取减数addr2地址偏移量
mov di,offset result ;di←取差result地址偏移量
mov cx,len ;cx←字数
clc ;清进位标志
skip: mov ax,[si]
sbb ax,[bx] ;完成字减法
mov [di],ax ;保存求差的结果
5/30/2018
10
第10章数据运算程序设计
安徽理工大学计算机汇编教案数据运算程式设计 来自淘豆网www.taodocs.com转载请标明出处.