gpt4 book ai didi

assembly - 第一个操作系统,一些 assembly 线说明

转载 作者:行者123 更新时间:2023-12-03 06:35:05 26 4
gpt4 key购买 nike

我正在使用 NASM 编写我的第一个操作系统引导扇区。我让它工作了,它只显示“Hello OS world!”以红色字母表示。够简单的。我已将 boot.asm 转换为 boot.bin,然后将其转换为 boot.img。我正在使用 VMWare 播放器,我将 boot.img 安装为软盘驱动器并从那里启动,效果很好。但是,此汇编代码中有几行我不明白其用途。

       org  07c00h                         
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx, 16
mov ax, 01301h ;
mov bx, 000ch ;
mov dl, 0 ;
int 10h ;
ret
BootMessage: db "Hello, OS world!"
times 510-($-$$) db 0
dw 0xaa55 ;

以分号结尾的行是我不明白的行。我做了很多谷歌搜索,并且已经能够找出其他的东西。我在编写汇编方面相当有能力。例如,我知道 mov ax,01301h01301h 移动到 AX 寄存器中。但我不明白为什么,也不明白 01301h 有何重要意义。我猜它们有点像格式化字符串的参数,但这只是一个猜测。任何和所有的帮助将不胜感激。

最佳答案

查看this page about INT 10H了解更多信息。这些数字是控制该中断行为的参数。对于您的情况:

ax = 0x1301 -> ah = 0x13 al = 0x01
bx = 0x000c -> bh = 0x00 bl = 0x0c
cx = 16
dl = 0x00

AH=0x13 表示“写入字符串”,以及各种其他控制参数:

AL = write mode -> 1
BL = color -> 0x0c = light red
BH = page number -> 0
CX = string length -> = 16
DH = row -> 0
DL = column -> 0
ES:BP = offset of string -> pointer to BootMessage string

关于assembly - 第一个操作系统,一些 assembly 线说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14530461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com