我要創建接收兩個參數的過程:(堆棧):x86程序集 - 如何將字符串複製到本地(堆棧)變量?
串的offest - 一個字節數組。
字符串的長度。
我必須創建一個局部變量,並將字符串複製到變量。
然後我試圖打印它。它不起作用。
.model small
.stack 64
.data
str1 db "Hello world$"
len dw $-str1
.code
print proc
push bp ; save bp
mov bp, sp
mov cx, [bp+4]
mov di, [bp+2]
mov ah, 02
do1:
mov dl, ss:[si]
int 21H
inc si
loop do1
pop bp
ret 4
endp print
cpy proc
mov bp, sp
mov si, [bp+2] ; string's offset
mov cx, [bp+4] ; string's length
sub sp, cx ; create cx'th byte array
mov di, sp
do:
mov ax, [si]
mov [di], ax
inc si
inc di
loop do
add sp, [bp+4] ; restore stack
; print
push len
push sp
call print
ret 4
endp cpy
start:
mov ax, @DATA
mov ds, ax
push len
push offset str1
call cpy
mov al, 0
mov ah, 4ch
int 21H
end start
它打印一些「隨機」值。你有什麼想法爲什麼?