如何解决在实模式下制作打印功能
我见过很多和我做同样事情的问题,但没有真正找到对我有帮助的答案。
就像标题所说的那样,我正在尝试创建一个简单的打印函数,该函数获取被推送到堆栈中的字符串的地址并打印它。
对我的代码的普遍批评显然更受欢迎。
[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 举报,一经查实,本站将立刻删除。