编写一个程序,计算|X-Y|的值,并将结果存入RESULT单元中,其中X和Y都为带符号字数据。
P154
例4.11
汇编思路:DATA段定义X、Y、RESULE分别用于存放随机数、存放随机数、存放最后计算结果。STACK段定义100DB大小的堆栈段运算存储空间。将AX获取到X的值,然后与Y进行CMP相减,判断JNS的值,结果是正数还是负数,若为正数直接将AX的值赋值给RESULT,然后调用4CH号功能返回DOS系统;若是负数,需要将AX进行求补运算,获得绝对值的结果,然后调用4CH号功能返回DOS系统。
汇编代码:
DATA SEGMENT
X DW 10 ;随机数存储到X中
Y DW -14 ;随机数存储到X中
RESULE DW ? ;存放最后的结果
DATA ENDS
STACK SEGMENT STACKDB 100 DUP(?)
STACK ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK
STACK: MOV AX,DATAMOV DS,AXMOV AX,X ;X的内容赋值给AXSUB AX,Y ;进行判断X-Y的SF符号位,1为负数,0位正数JNS DONE ;若SF符号位为0,即结果为正数,跳转到DONE标签处,否则结果为负数,执行下一条指令NEG AX ;执行到此条指令的时候,结果为负数,即SF=1,求补,即求绝对值
DONE: MOV RESULT,AX;将最后运算的结果赋值给RESULT单元MOV AX,4CH ;调用4CH号功能,返回DOS操作系统INT 21H ;终止当前程序的运行,并返回DOS系统
CODE ENDSEND START