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
再看一下
你的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 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
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