我正在编写一个程序,其中的要求如下:
有一个名为Name的字符串变量,它设置为您的全名,包括空格.
仅清除AL寄存器,而不是EAX寄存器的其余部分.
循环遍历Name变量中的每个字符.
使用XOR命令组合每个字符.
将最终的XOR结果存储在AL寄存器中.
在程序结束时包含DumpRegs命令.
我一直在努力使这一点正确并且一直试图使用本书中的例子,但是,我只是不断收到错误.这是我有的:
INCLUDE Irvine32.inc
.data
name BYTE "Joe Smith" , 0 ;
temp BYTE SIZEOF name DUP(0)
.code
main PROC
mov al,0
mov esi,0
mov ecx,SIZEOF name
Combine:
xor al,name[esi]
inc esi
loop Combine
Call DumpRegs
exit ; exit to operating system
main ENDP
END main
Run Code Online (Sandbox Code Playgroud)
我收到错误:

我是汇编语言编程的新手,我希望我的输出有单独的行,以便更容易阅读,但是,我编写了代码并让它工作,但后来被告知我实际上无法使用Irvine 程序来创建一个新的行。我的教科书只使用了尔湾的“Crlf”,而其他人在本网站上提出类似问题的代码完全破坏了我的程序,所以现在我迷路了。
我尝试过的一个是:
mov ah, 0Eh ;print new line sequence
mov al, 0Dh
int 10h
mov al, 0Ah
int 10h
Run Code Online (Sandbox Code Playgroud)
无论如何,这里仍然是我的 Irvine 函数的完整代码。有人可以帮助我在不使用“call Crlf”的情况下获得我正在寻找的输出吗?或者让我知道为什么上面的代码破坏了我的程序?我确定我遗漏了一些东西。
INCLUDE Irvine32.inc
.data
prompt BYTE 'Enter a positive integer: ', 0
report1 BYTE 'The sum is: ', 0
report2 BYTE 'The product is: ', 0
report3 BYTE 'The power result is: ', 0
temp DWORD ? ;
.code
main PROC
; Main program control procedure.
; Calls: GetInteger, AddNumbers, MultiplyNumbers,
; WriteInt, CalculatePower
call GetInteger ;Get …Run Code Online (Sandbox Code Playgroud)