[英]why this assembly piece of code do jmp forever
我寫了代碼,但是我不知道為什么它會永遠提示用戶,實際上,除非按Enter鍵而不給出任何數字,否則它永遠不會結束。 這個代碼:
output prompt1;
inputs number,16 ;
atoi number ;
mov max,ax ;
mov cx , 10 ;
do: dec cx ;
output prompt1;
inputs number,16;
atoi number ;
cmp ax, max;
jge l1;
cmp cx , 1;
jne do ;
je exit;
l1: mov max ,ax ;
jmp do ;
exit:
output prompt2;
itoa number , max;
output number;
輸入和輸出是一些用戶界面工具,而itoa,atoi分別為ascii的整數,反之亦然,但我要強調一點,“ atoi”將結果保存在ax寄存器中。
我還有另一個問題,如何設計{或制作}這樣的樣式,以使樣式更好的C / C ++樣式的算法?
非常感謝。
也許,您可以通過插入推入式彈出按鈕來解決問題,以確保cx不變
在“ do”和“ cmp cx,1”之間:
do: dec cx ;
push cx
output prompt1;
inputs number,16;
atoi number ;
cmp ax, max;
jge l1;
pop cx
cmp cx , 1;
jne do ;
je exit;
另一個問題可能是“ je exit”。 替換為
jmp exit
或“ jmp短退出”。 這樣可以節省cPU不會在l1繼續
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.