问题描述
我见过很多和我做同样事情的问题,但没有真正找到对我有帮助的答案。
就像标题所说的那样,我正在尝试创建一个简单的打印函数,该函数获取被推送到堆栈中的字符串的地址并打印它。
对我的代码的普遍批评显然更受欢迎。
[bits 16]
[global _start]
org 0x7c00 ;set origin to smthn idk someone recommanded it
;globals
buffer: db "Hello World!",0x0a,0 ;null terminated string
eop: db "End of program",0
_start:
xor ax,ax
mov ds,ax ;set data segment to 0
push buffer
call print ;call print with addr of buffer in the stack
mov al,'F' ;debug
mov ah,0x0e
int 0x10
jmp $ ;end of program (loop forever)
print:
.prepare:
push bp
mov bp,sp
pusha ;save all registers
mov si,[bp+4] ;use si so save index of string
.char_loop:
mov al,[si] ;offset from added data
add si,1
cmp al,0x0 ;string is terminated by null
je .return
mov ah,0x0e
int 0x10
jmp .char_loop
.return:
popa
pop bp
ret
times 510-($-$$) db 0 ;fill dead space with 0
db 0x55,0xaa
;end boot sector with 0x55 0xaa
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)