実機
qemuではうまく動くけど実機ではFDからの読み込みに失敗しているのでデバッグ表示用のコードを書いた
######################################### # for debug ######################################### _ax: .ascii "ax:\0" _bx: .ascii "bx:\0" _cx: .ascii "cx:\0" _dx: .ascii "dx:\0" _si: .ascii "si:\0" _di: .ascii "di:\0" _sp: .ascii "sp:\0" _cs: .ascii "cs:\0" _ds: .ascii "ds:\0" _es: .ascii "es:\0" _ss: .ascii "ss:\0" _space: .ascii " \0" print_all_registers: pusha pushw %si movw $_ax, %si call printstr call print_register # print ax movw $_bx, %si call printstr movw %bx, %ax call print_register # print bx movw $_cx, %si call printstr movw %cx, %ax call print_register # print cx movw $_dx, %si call printstr movw %dx, %ax call print_register # print dx movw $_si, %si call printstr popw %si movw %si, %ax call print_register # print si movw $_di, %si call printstr movw %di, %ax call print_register # print di movw $_cs, %si call printstr movw %cs, %ax call print_register # print cs movw $_ds, %si call printstr movw %ds, %ax call print_register # print ds movw $_es, %si call printstr movw %es, %ax call print_register # print es movw $_ss, %si call printstr movw %ss, %ax call print_register # print ss popa ret print_register: # print %ax pushw %ax shr $8, %ax call print_char popw %ax call print_char pushw %si movw $_space, %si call printstr popw %si ret print_char: pushw %bx pushw %ax shr $4, %al cmpb $9, %al ja print_check1 addb $0x30, %al jmp print_check1_end print_check1: addb $0x37, %al print_check1_end: movb $0x0e, %ah xorb %bh, %bh int $0x10 popw %ax movb %al, %bl pushw %ax movb %bl, %al andb $0x0f, %al cmpb $9, %al ja print_check2 addb $0x30, %al jmp print_check2_end print_check2: addb $0x37, %al print_check2_end: movb $0x0e, %ah xorb %bh, %bh int $0x10 popw %ax popw %bx ret #########################################