汇编语言,in指令获取日期的一个问题?
mov al, 9
out 70H, al
in ax, 71H
这里AX的值为什么是FFFF
按我的理解,至少AL里的值是20(20年),但是却是FF
正常的写法是这样
mov al, 9
out 70H, al
in al, 71H
第一次补充:2020/07/26 10:23
在 DOSbox 中
in ax, 71H
al 的值是20
但是如果把代码写入裸机(VirtualBox)硬盘第一个(0号)扇区,就会显示FFFF,这是为什么?
具体代码如下:
segment code
bits 16
begin:
mov al, 9
out 70H, al
in ax, 71H
;显示 ax 的值
mov bx, ax
mov cx, 4
.a:
rol bx, 4
mov ax, bx
and ax, 0FH
add al, '0'
cmp al, '9'
jbe .b
add al, 7
.b:
mov ah, 14
push bx
mov bh, 0
int 10H
pop bx
loop .a
;退出程序
mov ah, 4CH
int 21H
;填充,BIOS启动第一个扇区结尾必须是 55AAH
times 510-($-$$) db 0
db 55H, 0AAH
用 NASM 编译
nasm XXX.asm -f bin -o filename
用工具把filename写入磁盘文件的0号扇区,启动虚拟机,显示FFFF
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论