这个汇编程序的前2条指令直接写在机器代码中,如何将它们翻译成标准格式(我猜它类似于 add%bp,%bx ,但没有任何意义因为这个例程应该清空8042缓冲区)?
func:
.word 0x00eb,0x00eb
in $64, %al
test %al, $2
jnz func
ret
答案 0 :(得分:1)
通常你会使用调试器。
db 0EBh, 00h
是一个空跳转,即跳转到紧随其后的指令。
答案 1 :(得分:0)
扩展500 - 内部服务器错误的答案,代码为:
func: jmp short func0
func0: jmp short func1
func1: in $64, %al
test %al, $2
jnz func
ret
两次跳转到下一条指令用于创建短延迟。在使用某些I / O端口操作时,某些8088/8086/80186 / 80286 / ...类型的环境可能需要这样做。例如,在IBM AT的早期,在某些情况下,AT / ISA总线的运行速度比一些较旧的ISA型外围卡设计运行的速度要快一些,因此跳转到下一条指令被用作延迟。