我有以下代碼(在 16 位實模式下使用 nasm 作業):
mov bx , 0x0 ;; use es(egmen) register
mov es , bx ;; to mov a value in al
mov al , es:0x48 ;; and print
int 0x10
mov al , 0x48 ;; shouldn't this print
int 0x10 ;; the same as above ?
據我所知 es:0x48 (es=0x0) 應該評估為 0x48。所以 al 暫存器必須包含那個值,盡管它沒有。為什么會這樣?
uj5u.com熱心網友回復:
是的,這是可能的,但它并沒有像你想象的那樣做。
指令
mov al, es:0x48
從地址加載一個位元組es:0x48到al. 這只會加載0x48到al如果在地址位元組es:0x48持有0x48。
x86 指令集沒有計算線性地址的指令。甚至像
lea ax, es:0x48
只會給你0x48(即段的偏移量),而不管是什么es。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/396814.html
上一篇:8086(x86-16)CPU的堆疊指標初始值是多少?
下一篇:在手臂組件中查找陣列中的最小元素
