两个十六位二进制数相减,完整汇编语言程序

2024-12-04 06:38:21
推荐回答(2个)
回答1:

对于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

回答2:

;两个十六位进制数相减

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