我写了代码,但我不知道为什么它会永远地从用户提示,实际上它永远不会结束,除非按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寄存器中。
和 我有另一个问题,如何设计{或制作}这样的{if,while,for C / C ++ styleled}算法更加精美?< / p>
非常感谢你。
答案 0 :(得分:0)
也许,你可以通过插入一个push和pop来解决问题,确保cx没有改变
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;
另一个问题可能是“出口”。替换为
jmp exit
或“jmp short exit”。这样,省钱,cPU将不会继续在l1