请帮忙看下这个程序 谢谢
请问下: 结果应该是 0001 0001 1101 0111
为什么我得的是 0001 0010 1101 0111
哪里错了?
data segment
;----------------
num dw 4567h
buf db 4 dup (?)
count db 4
data ends
code segment
assume cs:code,ds:data,es:data
begin:
mov ax,data
mov ds,ax
mov es,ax
;-----------------------------
mov dx,0
mov ax,num
mov si,offset buf
mov cl,4
again: rol ax,cl
mov bl,al
and bl,0fh
mov [si],bl
call compute
inc si
dec count
jnz again
disp: mov bx,dx
mov cx,16
aga: mov dl,'0'
rcl bx,1
adc dl,0
mov ah,2
int 21h
loop aga
mov ah,4ch
int 21h
compute proc near
mov bx,dx
shl dx,1
shl dx,1
shl dx,1
shl bx,1
add dx,bx
add dx,[si]
ret
compute endp
;-----------------------------
code ends
end begin