汇编新人,java里面的if...else在汇编里面应该怎么写?
汇编吧
全部回复
仅看楼主
level 3
这是我写的程序,想实现直角三角形的绘制,但是想限定行数小于20行,也就是说当输入的数大于20的时候,会输出Error: row count must be <= 20,而不是继续画图。求大神帮忙修改一下好么?我也知道是cmp jnl, 但是无论我怎么加结果就是不对>_<,恳请大神帮忙灰常感谢!
2015年04月16日 04点04分 1
level 3
为了全部显示,我把代码复制粘贴记事本里发上来的。这是我编译器里面部分代码的截图
2015年04月16日 04点04分 2
level 3
我想实现:
当输入大于等于20的整数时,运行结果如下:
Triangle
Enter a row count (<= 20): 25
Error: row count must be <= 20
当输入小于20的整数时,运行结果如下:
Triangle
Enter a row count (<= 20): 5
+
++
+++
++++
+++++
2015年04月16日 04点04分 3
level 13
大于或等于用jae
Cmp eax,20
Jae error
2015年04月16日 04点04分 6
大神~~~是在L1:push ecx; mov ecx, counter;后面直接加上你说的么?
2015年04月16日 07点04分
回复
Ģ��ɡ
:应该是call readint后传回的长度吧 若由EAX传回就比较EAX
2015年04月16日 08点04分
level 13
第二十行直接跳出,简洁的,输出文字就行
2015年04月16日 05点04分 7
大神~~~我刚开始学,不是很清楚,能说详细一点么?怎么直接跳出?
2015年04月16日 07点04分
level 13
再看一下
你的call readint后有一句
Call Crlf
不知这CrlF会不会保存EAX
安全的做法是
Call Readint
Push eax
Call Crlf
Pop EAX
Cmp eax,20
Jae error
Mov ecx,eax
2015年04月16日 08点04分 8
谢谢,我一会儿试试:)
2015年04月16日 16点04分
加上后有两个error,一个是invalid operand size for instruction。
2015年04月17日 01点04分
另一个是Error 2 error MSB3721: The command "ml.exe /c /nologo /Sg /WX /Zi /Fo"Debug\assign07.obj" /Fl"Project.lst" /I "c:\Irvine" /W3 /errorReport:prompt /Ta..\assign07.asm" exited with code 1
2015年04月17日 01点04分
level 3
按照各位大神说的加上去了,但是现在程序无法运行了,有两个error
.code
main PROC
mov edx, OFFSET msg1
call WriteString
call Crlf
call Crlf
mov edx, OFFSET msg2
call WriteString
Call Readint
Push eax
Call Crlf
Pop EAX
Cmp eax,20
Jae error
Mov ecx,eax
L1:
push ecx;
mov ecx,counter ;
L2:
mov al,'+';
call writechar;
loop l2;
pop ecx;
inc counter;
call crlf;
loop l1;
exit
main ENDP
END main
2015年04月17日 01点04分 9
level 3
2015年04月17日 01点04分 10
level 13
有没有处理error的副程序?
可以在exit后加
Error:
mov edx, OFFSET msg3
call WriteString
exit
另外exit是不是要写成 .exit <-有一个点在前
编译器的不同,没有[点]可能也对的
2015年04月17日 02点04分 11
成功了!!!原来需要exit。灰常感谢大神指点,谢谢~
2015年04月17日 02点04分
诶,不对,需要小于等于20都可以画图,发现现在这个程序20的时候也不能画图,而且小于等于19的时候会出现下面这样的运行结果。
2015年04月17日 02点04分
level 3
2015年04月17日 02点04分 12
level 3
2015年04月17日 02点04分 13
level 3
20 的问题解决了,只需要把这里改成21就可以了Cmp eax,21。 但是如何使正常画图的时候不显示错误提醒呢?
2015年04月17日 02点04分 14
loop l1; 后加直接出口 exit <--加上
2015年04月17日 03点04分
嗯嗯,刚找到这个问题,灰常感谢大神费心帮忙看代码了,谢谢!
2015年04月17日 03点04分
level 3
问题解决,还是exit的问题,下来会仔细看看笔记的:)
2015年04月17日 03点04分 15
1