1
私は単純なOSを書いています。emu8086でブートローダーとカーネルを書いてフロッピーセクタに書き込みました。エミュのフロッピードライブから起動すると、すべて正常に動作しますが、フロッピーから仮想ボックス内で起動すると操作ができなくなります。たとえば、次のコマンドは、システムの日付と時刻を取得カーネルはemu8086で動作しましたが、フロッピーコントローラのバーチャルボックスでは動作しません
:エミューで
infoCommand:
lea si, info_msg
call printString
;Day Part
mov ah, 2Ah ; To get System Date
int 21h
mov al, dl ; Day is in DL
aam
mov bx, ax
call disp
mov dl, '/'
mov ah, 02h ; To Print/in DOS
int 21h
;Month Part
mov ah, 2Ah ; To get System Date
int 21h
mov al, dh ; Month is in DH
aam
mov bx, ax
call disp
mov dl, '/'
mov ah,02h ; To Print/in DOS
int 21h
;Year Part
mov ah, 2Ah ; To get System Date
int 21h
add cx, 0F830h ; To negate the effects of 16bit value,
mov ax, cx ; since AAM is applicable only for AL (YYYY -> YY)
aam
mov bx, ax
call disp
mov dl, ' '
mov ah,02h ; To Print '' in DOS
int 21h
;Hour Part
mov ah, 2Ch ; To get System Time
int 21h
mov al, ch ; Hour is in CH
aam
mov bx,ax
call disp
mov dl, ':'
mov ah,02h ; To Print : in DOS
int 21h
;Minutes Part
mov ah, 2Ch ; To get System Time
int 21h
mov al, cl ; Minutes is in CL
aam
mov bx, ax
call disp
mov dl, ':'
mov ah,02h ; To Print : in DOS
int 21h
;Seconds Part
mov ah, 2Ch ; To get System Time
int 21h
mov al, dh ; Seconds is in DH
aam
mov bx,ax
call disp
ret
;Display Part
disp proc
mov dl, bh ; Since the values are in BX, BH Part
add dl, 30h ; ASCII Adjustment
mov ah, 02h ; To Print in DOS
int 21h
mov dl, BL ; BL Part
add dl, 30h ; ASCII Adjustment
mov ah, 02h ; To Print in DOS
int 21h
ret
disp endp ; End Disp Procedure
を取得
あなたは何を手助けできますか?間違っている?