实验四 乘除指令及BCD运算程序
一、任务与目的
1. 实验任务:
(1) 熟悉和掌握乘除指令及BCD运算指令的用法; (2) 掌握BCD码运算程序的编写方法。 2. 实验目的:
(1). 掌握有符号数与无符号数乘除指令的运算方法; (2) 熟悉BCD码运算的运算方法。
二、原理(条件)
1.相关知识:
(1) 无符号数与有符号数乘除指令的格式; (2) BCD码运算的调整方法。 2.实验条件:
MASM汇编程序及TD调试软件。
三、内容步骤
1.启动TD(Turbo Debugger)输入程序段,观察乘法指令的执行情况、标志位
变化并分析结果: (1) MOV AL,0FBH MOV BL, 23H MUL BL
(2) MOV AL,0FBH MOV BL,23H IMUL BL
2.启动TD(Turbo Debugger)输入程序段,观察除法指令的执行情况、标志位 只能16位除以8位或32除以16位
变化并分析结果: (1) MOV AX,0FE7BH MOV BL, 23H DIV BL 改进后:
MOV AX,0FE7BH MOV DX,0000H MOV BX,0023H DIV BX
(2) MOV AX,0A9H MOV BX,23H
CBW
IDIV BX (3) MOV AX,0D7A9H MOV BX,1123H CWD IDIV BX
3.编写2个6位十进制数(6字节非压缩BCD码)加法程序,并最终把结果
转换为ASCII码,存放到数据段RESULT地址所指位置区域。
XX9732+651048=? XX为组号。参考程序如下,请在参考程序之上改写。
DATA SEGMENT
FBCD1 DB 02 03 07 09 05 00 FBCD2 DB 08H, 04H, 00H, 01H, 05H, 06H RESULT DB 6 DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX LEA SI,FBCD1 LEA DI,FBCD2 LEA BX,RESULT MOV CX,6 CLC
NEXT:MOV AL,[SI]
ADC AL,[DI] AAA ;非压缩BCD码加法调整指令 MOV [BX],AL INC SI INC DI INC BX DEC CX JNZ NEXT
① LEA SI,RESULT MOV CX,6
TBA:MOV AL,[SI] ;把结果转换为ASCII码 ADD AL ,30H MOV [SI],AL INC SI DEC CX JNZ TBA
② MOV AH,4CH
INT 21H CODE ENDS END START
(1) 在①处设置断点,观察RESULT所在存储空间内容;
(2) 在②处设置断点,观察RESULT所在存储空间内容;
(3) 其他条件不变,改成非压缩BCD码减法,如何更改程序;回家做?加法改减法 AAA非加改成AAS非减
(4) 其他条件不变,改成压缩BCD码加/减法,如何更改程序。变为三个字节的 DAS压缩减 DAA压缩加 压缩加法
压缩减法
四、数据处理(现象分析) 五、结论 六、参考资料
《微型计算机原理与接口技术》实验指导书
七、评语