我創建了一個裝配8086程序從我的學院,簡單地打印出結果是或否的分配,以及TASM彙編顯示錯誤的答案,當我檢查出調試器,看看它是如何發生的,它實際上做的是正確的事情!你說這個問題是什麼? 的代碼如下:裝配打印出不一樣的答案調試器說:
.model small
.stack 100h
.data
a dw 1101001001001011b
b db 'yes$'
d db 'no$'
.code
mov ax, @data
mov ds, ax
mov dx,0
mov cl ,1
loop1:
mov ah,0
mov al,0
rol a,cl
adc ah,0
rcr a,cl
rcr a,cl
adc al,0
rol a,cl
cmp ah,al
jne outloop
inc cl
inc di
cmp di,7
jne loop1
mov dx ,offset b
mov ah,9
int 21h
jmp outt
outloop:
mov dx ,offset d
mov ah,9
int 21h
jmp outt
outt:
.exit
end
在此代碼我需要實際檢查,如果號碼(由名稱一個上的數據段稱爲)是對稱的或不是,並打印出答案。在這種情況下,答案應該是肯定的,但它打印出號。
如果您的程序在調試器中的行爲與在調試器外運行時不同,它通常表示您沒有正確初始化內存和/或寄存器。我沒有按照你的代碼的邏輯,而是掃描了我看到的代碼,包括'inc di''cmp di,7'。問題是你永遠不會初始化寄存器_DI_。也許你打算在某個時候將它設置爲0? –
@MichaelPetch omgggg它的真實!非常感謝你的男人!哇,我永遠找不到那個錯誤! – Argaman