【发布时间】:2019-05-29 04:58:47
【问题描述】:
我想在我的操作系统中使用键来实现光标移动。我试过这段代码来做到这一点:
mouse:
mov ah,0h
int 16h
cmp al, 107
je Down
cmp al, 105
je Up
cmp al, 106
je Left
cmp al, 108
je Right
jmp mouse
Right:
add dl, 1
call SetCursor
jmp mouse
ret
Left:
sub dl, 1
call SetCursor
jmp mouse
ret
Up:
sub dh, 1
call SetCursor
jmp mouse
ret
Down:
add dh, 1
call SetCursor
jmp mouse
ret
SetCursor:
mov ah, 02h
mov bh, 00
int 10h
ret
引导加载程序(它的一小部分):
%include "stage2info.inc"
STAGE2_LOAD_SEG equ STAGE2_ABS_ADDR>>4
.stage2_loaded:
mov ax, STAGE2_RUN_SEG
mov ds, ax
mov es, ax
jmp STAGE2_RUN_SEG:STAGE2_RUN_OFS
TIMES 510-($-$$) db 0
dw 0xaa55
为什么光标在真实硬件上不垂直移动,而在虚拟机上却可以? 我试图改变钥匙,但没有,同样。 为什么代码在真实硬件上不起作用? 我的代码错了吗?
【问题讨论】:
-
这个程序在哪里运行?这是你的全部代码吗?它是否在 DOS 中运行?
-
它可以启动。是的,整个代码都是我的。
-
@fsdfff 这可能是问题所在。大多数 BIOS 不喜欢从没有启动签名的介质启动。
-
@fsdfff 请发布包含引导签名的更新代码。
-
它只适用于上键、左键和右键。在真实硬件上的向下键它仍然不起作用。
标签: assembly nasm x86-16 bootloader osdev