关于多位压缩ADB数与两位压缩ADB数的乘积,请高手注解一下,偶看不懂啊
stack segment stack'stack'
dw 32 dup(?)
stack endsdata segment
FIRST DB 78H,56H,...,12H
COUNT EQU $-FIRST
SECOND DB 15H
THIRD DB COUNT+1 DUP(?)
data endscode segment
begin proc far
assume as:stack,cs:code,ds:data
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
MOV SI,0
MOV THIRD[SI],0
MOV CX,COUNT
OUTSID: MOV BL,SECOND
MOV AX,0
INSIDE: ADD AL,FIRST[SI]
DAA
XCHG AH,AL
ADC AL,0
DAA
XCHG AH,AL
XCHG AL,BL
SUB AL,1
DAS
XCHG AL,BL
JNZ INSIDE
ADD AL,THIRD[SI]
DAA
MOV THIRD[SI],AL
XCHG AH,AL
ADC AL,0
DAA
INC SI
MOV THIRD[SI],AL
LOOP OUTSID
ret
begin endp
code ends
end begin
stack segment stack'stack'
dw 32 dup(?)
stack endsdata segment
FIRST DB 78H,56H,...,12H
COUNT EQU $-FIRST
SECOND DB 15H
THIRD DB COUNT+1 DUP(?)
data endscode segment
begin proc far
assume as:stack,cs:code,ds:data
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
MOV SI,0
MOV THIRD[SI],0
MOV CX,COUNT
OUTSID: MOV BL,SECOND
MOV AX,0
INSIDE: ADD AL,FIRST[SI]
DAA
XCHG AH,AL
ADC AL,0
DAA
XCHG AH,AL
XCHG AL,BL
SUB AL,1
DAS
XCHG AL,BL
JNZ INSIDE
ADD AL,THIRD[SI]
DAA
MOV THIRD[SI],AL
XCHG AH,AL
ADC AL,0
DAA
INC SI
MOV THIRD[SI],AL
LOOP OUTSID
ret
begin endp
code ends
end begin
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货