2
審查問題列出了這些寄存器十六進制:彙編語言絕對地址和段寄存器
cs = ???? sp = 0300 ax = a66a ip = 01cf
ds = 4100 bp = 0003 bx = 1234
ss = 48ee si = 0100 cx = 00ff
es = 4cee di = 1000 dx = 0000
要執行的下一條指令的絕對地址是40f0f。
40f0f -01cf _____ 40d40/10 = 40d4 = cs
是否數據段的大小以字節爲單位始終等於堆棧段減去數據段* 10? 48ee - 4100 = 7ee0。同樣,字節代碼段總是等於數據段減去代碼段* 10? 48ee - 40d4 = 81a0。
對於
mov cx,[bx + si]
,源操作數的絕對地址是42334.bx = 1234 si = 0100 _________ 1334 ds = 4100 * 10 = 41000 + 1334 = 42334
對於
mov cx,[di - 4]
,源操作數的絕對地址是41ffc。di = 1000 - 4 _________ 0FFC ds = 4100 * 10 = 41000 + 0ffc = 41ffc
對於
mov cx,[bp + si - 3]
,源操作數的絕對地址是48fe0。bp = 0003 si = 0100 - 3 _________ 0100 ss = 48ee * 10 = 48ee0 + 0100 = 48fe0
我要對解決這些正確的方法是什麼?我如何知道何時使用堆棧段進行這些計算以及何時使用數據段?
真的嗎?有人仍在教這些陳舊的概念?除非你在嵌入式領域工作,否則分割在多年前就消失了,我想,或者你正在採取某種計算機歷史課程:-) – paxdiablo
彙編語言似乎足夠接近計算機歷史課程。 – raphnguyen