在过去的几天里,我已经为操作系统做了一些测试,但是我无法理解为什么这段代码不起作用:我的函数输入字符串地址(在BX中)和字符串长度(在CX中)。 如果我在CX中输入一个数值(即10),那么如果我将[len]放在CX中它就不起作用。
bits 16
org 0x7c00
mov bx, string
mov cx, [len]
call print
jmp $
; bx = string address, cx = string lenght
print:
xor si, si
._loop:
mov al, [bx+si]
mov ah, 0x0e
int 0x10
inc si
cmp si, cx
jl ._loop
ret
string db "Hello world!"
len equ $-string
times 510-($-$$) db 0
dw 0xaa55
答案 0 :(得分:-1)
您应该测试此代码:
mov si,mystr1
call print_string
print_string:
pusha
@repeat:
lodsb
cmp al,0x00
je @done
mov ah,0x0E
int 10h
jmp @repeat
@done:
popa
ret
mystr1 db 'Hello World!',0