作业帮 > 综合 > 作业

汇编问题:双字有符号数如何比较大小.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 07:06:37
汇编问题:双字有符号数如何比较大小.
比较两个双精度数,比较大小,将大的数送入BUFC
两个数分别用DX AX,BX CX表示
datasegment
bufadd123a4567h
bufbdd223abcdeh
bufcdd?
dataends
stacksegment
db200dup(0)
stackends
codesegment
assumecs:code,ds:data,ss:stack
start:
?
codeends
endstart
比较双精度数大小,要比较一次或两次.
第一次,先比较高位字,按有符号数规则分大小:大的大,小的小
若高位字相等,再比较低位字,按无符号数规则分大小:高的大,低的小
所以,你程序代码段中?代码可这样编写:
MOV AX, DATA ; 段初始化
MOV DS, AX
MOV AX, STACK
MOV SS, AX

MOV DX, WORD PTR BUFA+2 ; 按题意,将数送入DX,AX, BX, CX
MOV AX, WORD PTR BUFA
MOV BX, WORD PTR BUFB+2
MOV CX, WORD PTR BUFB

CMP DX, BX ; 先比高位字
JG MOVE_A ; A大
JL MOVE_B ; B大
CMP AX, CX ; 高位字相等就再比低位字
JAE MOVE_A ; A大
JMP MOVE_B ; B大
MOVE_A:
MOV WORD PTR BUFC+2, DX ; A大
MOV WORD PTR BUFC, AX
JMP EXIT
MOVE_B:
MOV WORD PTR BUFC+2, BX ; B大
MOV WORD PTR BUFC, CX
EXIT:
如果题目是bufa>bufb,则把1送入dx,bufa=bufb,则把0送入dx,bufa
再问: 亲,你好!我也是用的这种方法,但是老师说没这么复杂。。所以不知道该怎么写。。
再答: 老师说没这么复杂,是因为你定义了BUFA和BUFB。 题目说数据存在DX, AX, BX, CX这四个寄存器中,所以可以取消数据段中BUFA和BUFB的定义,并将程序开头的将数据存入四个寄存器的代码删掉。