对于86而言,有直接的16位减法指令,所以这个题目的CPU应该是8位单片机,以51单片机为例,先将借位清零,低八位相减法,再高八位带借位减,类似于列式减法运算一样。程序如下:
; (R3R4-R6R7)=(R3R4)
;入口: R3,R4,R6,R7
;出口: R3,R4
NSUB :
MOV A,R4
CLR C ;借位清零
SUBB A,R7 ;低八位相减
MOV R4,A ;保存低八位结果
MOV A,R3
SUBB A,R6 ;高八位带借位减
MOV R3,A ;保存高八位结果
RET
;两个十六位进制数相减
data segment
num1 dw 1111000011110010b ;被减数
num2 dw 1111000011110001b ;减数
num3 dw ? ;结果
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov ax,num1
mov bx,num2
sub ax,bx
mov num3,ax
mov ah,02h ;显示结果
mov dx,num3
int 21h
mov ah,4ch
int 21h
code ends
end start