编写一个程序,计算|X-Y|的值,并将结果存入RESULT单元中,其中X和Y都为带符号字数据。

编写一个程序,计算|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	STACK
	  	DB 100 DUP(?)
STACK	ENDS
CODE	SEGMENT
		ASSUME	CS:CODE,DS:DATA,SS:STACK
STACK:	MOV	AX,DATA
		MOV	DS,AX
		MOV	AX,X	;X的内容赋值给AX
		SUB	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	ENDS
		END	START
		
		

猜你喜欢

转载自blog.csdn.net/qq_41264055/article/details/103738848