汇编语言,in指令获取日期的一个问题?

发布于 2022-09-12 03:52:01 字数 953 浏览 21 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文