依旧欧美打法
; 程序被加载值0x07c00处,显示Hello from QCOS. 可根据需求自行修改
; 我是不是应该分个段
jmp start
start:
; 我是不是应该初始一下栈
; 歪门邪道清屏法
mov ah,0x00
mov al,0x03
int 0x10
; 源地址是DS:SI
; 目的地址是ES:DI
; 显示Hello From QCOS!
mov ax,0x07c0
mov ds,ax ;段基地址为0x7c00 16位模式下自动左移四位 所以最终是0x7c000
mov ax,0
mov si,message ; 基地址已给,此乃偏移地址
mov di,ax ; 目标偏移地址从0开始写
mov ax,0xb800
mov es,ax ; 文本缓冲区地址 0xb8000
cld ;df = 0,正向传送
mov cx,message_length ;传送字符串长度
rep movsb ; 重复这条指令直到cx为0
jmp $ ; 停这
; 显示的字符串
message db 'H', 0x07, 'e', 0x07, 'l', 0x07, 'l', 0x07, 'o', 0x07, ' ', 0x07, 'F', 0x07, 'r', 0x07, 'o', 0x07, 'm', 0x07, ' ', 0x07, 'Q', 0x07, 'C', 0x07, 'O', 0x07, 'S', 0x07, '!', 0x07
message_length equ ($ - message)
; 填充剩余地方为0
times 510-($-$$) db 0
db 0x55,0xaa
运行效果
原理解读后面发
© 版权声明
THE END
暂无评论内容