【发布时间】:2014-02-06 22:02:08
【问题描述】:
我一直在尝试在 MASM 中连接一个字符串,但遇到了一些困难。首先,此时我的输出是一个带有树状字符的 0,但我认为我的 WriteString(来自 Irvine 库)可能没有被正确使用。 WriteString 是从 edx 还是 eax 写的?
我还知道,在使用字符串时,我需要使用指向第一个字符地址的指针,而不是整个字符串;这就是我试图用缓冲区和 OFFSET 指针做的事情,但我不确定这是否完全正确。我也不确定 push 和 pop 是否必要,如果是,它到底做了什么。
请帮忙!提前非常感谢。
这是我写的代码:
TITLE Str_Concat (WA5.asm)
; Program Description: This program concatenates a source string to a target string.
; Author:
; Date Created: 2/6/2013
INCLUDE C:\IrvineExamplesVS2010a\Irvine32.inc
.data
source BYTE "Rocks",0
target BYTE "Zachary",0
buffer BYTE 24 DUP (0)
.code
main PROC
push ds
pop es
mov esi, OFFSET source
mov edi, OFFSET target
cld ;direction = forward
mov cx, LENGTHOF source
rep movsb
call WriteString
call crlf
exit ; exit to operating system
main ENDP
END main
【问题讨论】: