2015-10-26 85 views
-1

在我的代码中,我成功地在屏幕上打印了名称,但现在只需要打印我的姓氏。虽然它仍然提示全名,但只有姓氏会出现在屏幕上。我一直在努力,但我无法弄清楚。程序不按计划运行

我的代码:

include irvine32.inc 

title Read5 

.data 

outmsg DB " Will Smith: ",0 ;promts here will smith but on screen only smith 

len DW 0 

.code 

main proc 

mov ecx, 5 

mov edx, offset outmsg 

call writestring 

call crlf 

sub eax,eax 

ShowChar: 

sub eax,eax 

mov al, [ebx] 

call writechar 

sub ebx, 1 

loop showChar 

Exit 

main endp 

end main 
+0

请正确格式化您的代码。 – skypjack

+1

我对irvine32.inc并不熟悉,但1)看起来你没有初始化读指针(ebx),并且2)然后你将它递减到应该递增的地方。 –

回答

0

你忘了设置在EBX指针。

mov ebx, offset outmsg + 6 ; +6 to skip " Will " 
mov ecx, 5 
ShowChar: 
sub eax, eax 
mov al, [ebx] 
call writechar 
add ebx, 1     ; don't subtract here 
loop ShowChar 

当然,您也可以按照完整名称的相同方式打印姓氏。

mov edx, offset outmsg + 6 ; +6 to skip " Will " 
call writestring 
call crlf