第六章、算术运算程序设计.ppt
文本预览下载声明
第六章 算术运算;在计算机中直接实现十进制数的运算有两种方法:;(1)指令系统提供专门进行BCD码运算的加、减、乘、除运算指令。;8086/8088系统共有六条BCD码校正指令。首先介绍加减运算的校正指令。; 例如:从键盘输入两个一位数的十进制数,然后相加,结果放在AH和AL中。;2、组合型加法校正指令DAA;例:实现两个4位十进制数的加法4678+2556;3、非组合型减法校正指令AAS;二、十进制数运算程序设计举例;DATA SEGMENT
DA1 DB 1,2,3,4
DA2 DB 0,1,2,3
DA3 DB 5 DUP(0),$
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS;MOV SI,0
LEA DI, DA3+4
MOV CX,4;CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
MOV SI,0
LEA DI,DA3+4 ;存结果单元末址送DI
MOV CX,4 ;十进制位数送CX
CLC
LOP: MOV AL,DA1[SI]
SBB AL,DA2[SI] ;两数相减
AAS ;校正
LAHF ;暂存向高位的借位
AND AL,0FH ;转换成ASCII码
OR AL,30H
MOV [DI],AL ;存结果
SAHF ;恢复向高位的借位
INC SI ; DEC DI
LOOP LOP
MOV AL,‘+ ’
JNC NEXT
MOV AL,‘-’ ;有向更高位的借位, 存‘-’号
NEXT: MOV [DI],AL
MOV DX,OFFSET DA3
MOV AH,9 ;9号功能调用显示结果
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
;6. 2 乘除法运算; MUL只影响CF和OF标志。若结果的AH(字节运算)或DX(字运算)为全0,CF=0、OF=0,否则 CF=1、OF=1。;例如,对字节乘法有:
若乘积的(AH)且AL最高为1,则表示符号扩展, 则CF=0、OF=0;
若乘积的(AH)且AL最高为0,则表示符号扩展, 则CF=0、OF=0;
若乘积的(AH)不是符号扩展, 则CF=1、OF=1;
若乘积的(AH)不是符号扩展, 则CF=1、OF=1。;3、无符号数除法指令DIV;4、带符号数除法指令IDIV;由于没有乘方指令,因此需要将乘方转换为乘法运算。即: ;DATA SEGMENT
VARX DW 5
VARY DW 6
POWER DW ?
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS;初始化:AX=VARX
CX=VARY;CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
MATH: MOV AX,DATA
MOV DS,AX
MOV
显示全部