实验内容
编写程序计算上面表达式。设X为带符号字数据,存在内存的DAX单元,结果存入DAY单元。如果结果为0,则在显示器上输出字符0;如果为负,则在显示器上输出“-”;否则在显示器上输出“+”。使用DEBUG工具调试程序,查看程序运行结果。
算法描述
算法及其步骤:
首先将DAX中的数据读入到AX中,将AX与0比较,如果AX的值小于等于0跳转到ABSL,反之再将AX与10进行比较,如果AX的值小于等于10跳转到ONE,反之再将AX与40进行比较,如果AX的值小于等于40跳转到TWO,反之跳转到MOVE中。
ONE:AX加上1000跳转到MOVE
TWO:让CL的值为3,让AX左移3位,让AX加上DAX,再AX - 6,然后跳转到MOVE
MOVE:将结果存入DAY中,再将AX与0比较大小,如果等于0跳转到THREE,小于0跳转到FOUR,大于0则就在屏幕上输出+
THREE:在屏幕上显示0,跳转到ENS
FOUR: 在屏幕上显示‘-’
ENS: 结束
实验结果
实验结果分析:
实验结果与预期完全吻合
结果为负时显示“-”
结果为零时显示“0”
结果为正时显示“+”
源程序清单
DSEG SEGMENT
DAX DW 0;可以输入值
DAY DW 0
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
BEGIN: MOV AX,DSEG
MOV DS,AX
MOV AX,DAX
CMP AX,0
JLE ABSL
CMP AX,10
JLE ONE
CMP AX,40
JLE TWO
JMP MOVE
ONE: ADD AX,1000
JMP MOVE
TWO: MOV CL,3
SHL AX,CL
ADD AX,DAX
SUB AX,6
JMP MOVE
ABSL: NEG AL;
MOVE: MOV DAY,AX
CMP AX,0
JZ THREE
JL FOUR
MOV AH,2
MOV DL,'+'
INT 21H
JMP ENS
THREE: MOV AH,2
MOV DL,'0'
INT 21H
JMP ENS
FOUR: MOV AH,2
MOV DL,'-'
INT 21H
ENS: MOV AX,4C00H
INT 21H
CSEG ENDS
END BEGIN