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

Amelie
  • 74
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

评论
阅读 274
撰写回答

登录后参与交流、获取后续更新提醒

宣传栏