河北专接本微机原理编程题
程序员文章站
2022-03-10 08:22:54
...
设在相邻的两个字单元WORD1和WORD2中存有一带符号的双字长数据 abcd jkmbh
(a,b,c........分别表示任意的一位十六进制数)。搞一汇编语言程序,求除双字长数据的绝对值,存入字单元ABS1和ABS2
DATA1 SEGMENT
WORD1 DW efgh
WORD2 DW abcd
ABS1 DW ?
ABS2 DW ?
DATA1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA1
START:
MOV AX,DATA1
MOV DS,AX
MOV AX,WORD1;因为是要求绝对值,所以要判断是不是负数,用或指令
;判断符号位是1还是0
MOV DX,WORD2
OR DX,DX
JNS NEXT ;SF不等于1跳,即正数
NOT AX ;给负数求绝对值就是按位取反,末尾加一
NOT DX
ADD AX 1
ADC DX,0 ;ADC带进位的加法,你不知道,AX向DX有没有进位
;所以DX+0+1 这是有进位 CF=1时
; DX+0+0 这是没有进位
NEXT:
MOV ABS1,DX
MOV ABS2,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
中。