我必须创建一个接收两个参数的过程:(在堆栈上):
一个字符串 - 一个字节数组。
字符串的长度。
我必须创建一个局部变量,并将字符串复制到变量中。
然后我正在尝试打印它。它不起作用。
.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
它打印一些“随机”值。你知道为什么吗?