❶ 計算物理地址
不知道這是不是你想要的。
計算比較急,你最好驗證一下代入數相加的結果有沒有錯
ADD AX,[1000H] ;直接定址方式EA=DS*10H+1000H=2000H*10H+1000H=21000H
MOV AL,[BX+SI] ;基址加變址定址方式EA=DS*10H+BX+SI=2000H*10H+0100H+00A0H=201A0H
INC CX ;寄存器定址方式 CX
MOV AX,[BX+10] ;寄存器相對定址方式EA=DS*10H+BX+10=2000H*10H+0100H+10H=20110H
MOV AX,[BX] ;寄存器間接定址方式EA=DS*10H+BX=2000H*10H+0100H=20100H
MOV AX,0ABH ;立即定址方式EA=DS*10H+0ABH=2000H*10H+0ABH=200ABH
MOV AX,[BX+SI] ;基址加變址定址方式EA=DS*10H+BX+SI=2000H*10H+0100H+00A0H=201A0H
MOV AX,[100H] ;直接定址方式 EA=100H
MOV AX,[BP] ;寄存器間接定址方式EA=DS*10H+BP=2000H*10H+0010H=20010H
MOV AX,VAL[BX] ;寄存器相對定址方式EA=DS*10H+VAL+BX=2000H*10H+0050H+0100H=20150H
❷ 指出定址方式並計算物理地址
第一種是指定段寄存器的方法
具體的物理地址是通過ES和BX來計算的,計算方法和DS:BX的方法一樣,只不過是把DS換成了ES,沒有加段指示前綴的話默認為DS
第二種是MASM提供的一種定址方式
其實映射到指令的話就是"基址+偏移量"的定址方式,SI是基址,VAL在這里代表偏移量,這條指定對應的指令是:
MOV AX,[SI+50H]
第三種和第二種類似
其實就是"基址+變址+偏移量"的定址方式
具體的數值自己計算吧
❸ 微機原理定址當中,物理地址=段寄存器x16+寄存器中的16 是指的什麼,而且每次算出的數都是 x10的結果。。。
不過就是:把段寄存器內容,左移四位,而已。
整這么啰嗦幹嘛!
二進制,左移一位,右邊添一個 0,就是乘以 2;
二進制,左移二位,右邊添一個 0,就是乘以 4;
左移三位,就是乘以 8;
左移四位,就是乘以 16。
乘什麼乘!
填上四個二進制的 0,(或一個16進制的 0),就完事了。
CPU,它也就是左移四位,添上 0 就完了。
哪裡用了什麼乘法!
在此處說到乘法,都是教師自己在那瞎編亂造,騙學生的。
❹ 已知當前段的寄存器的基址怎樣找物理地址末地址與首地址
段寄存器的內容左移4位(我說的是二進制),就是這個段的首地址了,在這個基礎上加上0ffffh,就是這個段的末地址。因為物理地址=段基地址左移4位+段內偏移地址,其中段內偏移地址是16位。
❺ 8086如何計算的物理地址
8086中含有存儲器。存儲器中每一個單元的地址可以用兩種方法表示:
1.邏輯地址:其表達形式為「段地址:段內偏移地址」。
2.物理地址:CPU與存儲器進行數據交換時在地址匯流排上提供的20位地址信息稱為物理地址。
物理地址=段地址×10H+段內偏移量
註:H為16進制,CS :代碼段寄存器,
❻ 匯編語言定址方式以及物理地址
1.直接將0ABH放入AX寄存器2.直接將BX寄存器數據放入AX寄存器3.默認定址方式,將段地址2000H(DS寄存器)放入AX寄存器4.指定定址方式,以BX寄存器內容為段地址SI寄存器為偏移地址的數據放入AX寄存器里。段地址加偏移地址等於物理地址,列:段地址2000H進一位等於20000H加偏移地址0001H等於物理地址20001H。具體的忘了,你可以看一下王爽的書,裡面有的