博时基金招聘2018:adc指令迷惑?

来源:百度文库 编辑:高考问答 时间:2024/05/13 05:00:24
data segment
sj db 13
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov ax,0
mov cl,[sj]
done: add al,cl
adc ah,0
dec cl
jnz done
mov dx,ax
mov ah,4ch
int 21h
code ends
end start

adc ah,0;将源操作数与目的操作数及进位CF相加,什么意思??我把这一条指
令去掉,dx的结果还是005b,ax是4c5b,没变呀!麻烦您详解一下

adc ah,0的作用是:ah:=ah+0+cf cf 是进位标志。在你的程序中,因为[sj]太小(13),所以13+12+11+10+9+。。。+1都没产生进位。这时你去掉adc ah,0 当然没错,因为这句的意思等效于:ah:=ah+0+0(cf一直是0,因为从没产生过进位)。但当你把[sj]改得稍微大一点,可能就要出错了。