(2011.11.06)組合語言第02章習題(定址方式與組合語言程式的組織)
組合語言第02章習題(定址方式與組合語言程式的組織)
2.2 有兩個16位的字1EE5H 和 2A3CH 儲存在IBM PC 的000B0H 和000B03H 的記憶體單元中,請以圖表的形式說明記憶體中的儲存情況
解:(遵照高高低低的原則)
記憶體地址 內容
000B4H 2AH
000B3H 3CH
000B2H
000B1H 1EH
000B0H E5H
2.3 如下圖, 展示的是IBM PC的記憶體資訊, 請說明30022H 位元組單元和30024H位元組單元的內容,和30021H 字單元和30022H 字單元的內容。
儲存器 內容
30020H 12H
30021H 34H
30022H ABH
30023H CDH
30024H EFH
解:(遵照高高低低的原則)
位元組:
30022H位元組單元的內容=0ABH
30024H位元組單元的內容=0EFH
字:
30021H字單元的內容=0AB34H
30022H字
2.4 3017:000A的段地址的實體地址和偏移量是什麼?
3015:002A和3010:007A的段地址和偏移是什麼?
解:(實體地址及偏移地址的計算方法)
實體地址1:PA= 3017 × 10H + 000AH = 3017AH
實體地址2: PA= 3015 × 10H + 002AH = 3017AH
實體地址3: PA= 3010 × 10H + 007AH = 3017AH
2.5 執行程式之前, (CS)=0A7F0H,(IP)=2B40H, 程式的第一個字的實體地址是什麼?
解:(程式每次執行指令的地址的是CS:IP)
PA=(CS)×10H+(IP)= 0A7F00H + 2B40H = 0AAA40H
2.6 在記憶體中,每一段都頂多有10000H位元組。下面是用DEBUG的命令“r”來在終端上展示暫存器的內容。請以圖表的形式顯示記憶體是如何劃分成段的,還有OF,SF,ZF,CF的值。
終端顯示的內容:
AX=0000 BX=0000 CX=0070 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC
解:此時 OF,SF, ZF, CF 都為0。
(幾乎是每10000H就劃分一個段)
10E40-10F40-資料段
10F40-20F40-附加段
21F00-31F00-堆疊段
31FF00-41FF0-程式碼段
2.8 哪型別的暫存器可以用來顯示記憶體地址
解:CS, DS, ES, SS, EAX, EBX, ECX, EDX, EBP, EIP, ESP, EDI, IP, SP, BP, BX, DI, SI
2.9 CPU--分析,控制和執行指令的元件, 包含 算術邏輯單元和一組暫存器。
記憶體――記憶體儲存過程,資料等等, PC中,有RAM 和ROM
Stack――儲存空間,以後進先出的方式工作。
IP――儲存下一條要執行的指令
SP――儲存當前棧頂地址的暫存器
狀態標誌位――變址位記錄指令執行的結果, 包含6 個位, OF,SF,ZF, AF,PF,CF。
控制標誌位――控制指令的標誌, PC中有三個位, 是DF,IF,TF.
段暫存器――暫存器儲存每一個邏輯段起始地址, PC中有4種,分別是CS,DS,SS 和ES。
實體地址――顯示儲存空間中每一個位元組的唯一的地址。
組合語言――用指令的助記符,符號地址,標號等符號書寫程式的語言。
機器語言――能被計算機直接識別的語言。
彙編程式――把組合語言程式翻譯成機器語言程式的系統程式。
連線程式――把若干個模組連線起來成為可執行檔案的系統程式。
指令――告訴CPU要執行的操作(一般還要指出運算元的地址),在程式執行是執行。
偽指令――由彙編程式在彙編過程中執行的指令。
5. 假定DS = 5788H, 偏移地址94H, 位元組的PA(實體地址) 是( ). B
a.57974H b.57914H c. 5883H d. 58ECH
6.在段中定址的時候,在8086CPU的暫存器中,哪些暫存器可以提供偏移地址( ) B
A. AX, BX, CX, DX || B. BX, BP, SI, DI || C. SP, IP, BP, DX || D. CS, DS, ES, SS
2-1下面的MOV指令完成什麼操作?
(a)MOV AX,BX; (c)MOV BL,CH;
解:(mov指令的考察)
( a) 把BX的內容移動到AX中 (c) 把CH的內容移動到BL中
2-2 列出暫存器定址使用的8位暫存器
解:(暫存器位數的考察)
AH、AL、BH、BL、CH、CL、DH和DL
2-3 列出暫存器定址使用的16位暫存器
解:(暫存器位數的考察)
AX、BX、CX、DX、SI、DI、SP、BP和段暫存器。
2-6 指令MOV BL,CX 錯在哪裡?
解:BL和CX的位數不一致。
2-7 指令MOV DS,SS 錯在哪裡?
解:兩個暫存器之間是不能直接傳送資料的。
2-13 指令 MOV [BX],[DL] 錯在哪裡
解:目標運算元定址方式錯誤。
2-17給定DS=1200H,BX=0100H和SI=0250H。假定按真實模式操作,確定下面每條指令定址的地址:
解:
(a) MOV [100H],DL; 12100H
(c) MOV DL,[BX+100H]; 12200H
2-18 給定DS=1100H,BX=0200H,LIST=0250和SI=0500H。假定按真實模式操作,確定下面每條指令定址的地址:
解:(b) MOV CL,LIST[BX+SI]; 11950H
2-19 給定DS=1300H,SS=1400H,BP=1500H和SI=0100H。假定按真實模式操作,確定下面每條指令定址的地址:
解:(b) MOV AL,[BP+SI+200H]; 14800H
2-20 哪些基址暫存器可以定址堆疊段的資料?
解:SS, SP
3.1 給出(BX)=637DH,(SI)=2A9BH,偏移量D=7237H,嘗試指出下列每一種定址模式的有效地址。
(1) 立即定址;
(2) 直接定址
(3) 用BX的暫存器定址;
(4) 用BX的暫存器間接定址;
(5) 用BX的暫存器相對定址;
(6) 基址變址定址
(7) 相對基址變址定址
解:
(1) 無
(2) EA=7237H
(3) 無
(4) EA=637DH
(5) EA=D+[BX]=7237H+637DH=0D5B4H
(6) EA=[BX]+[SI]=637DH+2A9BH=8E18H
(7) EA=D+[BX]+[SI]=7237H+637DH+2A9BH=1004FH
3.2 根據下列要求, 寫出相關的組合語言指令。
(1) 把BX 的內容和DX 的內容相加,結果放入DX 中。
(2) 把AL的內容加上記憶體地址的內容,並把結果放到AL中。記憶體地址由BX和SI進行基址變址定址所得。
(3)把CX的內容加上記憶體地址的一個字,並把結果放到記憶體地址中。記憶體地址由BX和偏移量0B2H進行暫存器相對定址所得。
(4) 把記憶體地址的內容與數2A59H相加,並把結果放入記憶體地址。記憶體地址由偏移量0524H進行直接定址所得。
(5) 把數值0B5H 與AL 暫存器的內容相加, 結果放入AL暫存器。
解(ADD指令的使用)
(1) ADD DX, BX
(2) ADD AL, BX[SI]
(3) ADD WORD PTR 0B2H [BX], CX
(4) ADD WORD PTR [0524H], 2A59H
(5 )ADD AL, 0B5H
3.3 寫出指令,把首址是BLOCK的字陣列中的第六個字移入DX暫存器。使用如下的定址方式。
(1) 暫存器間接定址
(2) 暫存器相對定址
(3) 基址變址定址
解:
(1) LEA BX, BLOCK+10
MOV DX, WORD PTR [BX]
(2) LEA SI, BLOCK
MOV DX, WORD PTR 0AH[SI]
(3) LEA BX, BLOCK
MOV SI, 0AH
MOV DX, WORD PTR [BX][SI]
3.4給出(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H, (21200)=2AH,(21201)=4CH,(21202)=B7H, (21203)=65H,
嘗試解釋:執行指令後,AX暫存器的內容。
(1) MOV AX, 1200H
(3) MOV AX, [1200H]
(5) MOV AX, 1100[BX]
(7) MOV AX, 1100[BX][SI]
解:
(1) (AX)=1200H
(3) (AX)=4C2AH
(5) (AX)=4C2AH
(7) (AX)=65B7H
3.4 給出(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H, (21200)=2AH,(21201)=4CH,(21202)=B7H, (21203)=65H,
嘗試解釋:執行指令後,AX暫存器的內容。
(1) MOV AX, 1200H
(3) MOV AX, [1200H]
(5) MOV AX, 1100[BX]
(7) MOV AX, 1100[BX][SI]
解:
(1) (AX)=1200H
(3) (AX)=4C2AH
(5) (AX)=4C2AH
(7) (AX)=65B7H
3.8 給出(DS)=2000H,(ES)=2100H,(SS)=00A0H,(BX)=0100H,(BP)=0010H,資料段中VAL 的偏移地址是0050H,指出源運算元段的定址方式和實體地址。
(2) MOV AX, BX
(4) MOV AX, VAL
(6) MOV AX, ES:[BX]
(8) MOV AX, [SI]
(10)MOV AX, VAL[BX]
(12)MOV AX, VAL[BX][SI]
解:
(2) 暫存器定址
(4) 直接定址,實體地址=20050H
(6) 暫存器間接定址,實體地址=21100H
(8) 暫存器間接定址,實體地址=200A0H
(10) 暫存器相對定址,實體地址=20150H
(12) 相對基址變址定址,實體地址=201F0H
1. 當執行POP [BX] 和尋找目標運算元時,段地址跟偏移地址是在( )中。 B
a. 無段地址也無偏移地址
b. DS 和BX中
c. ES 和 BX中
d. SS 和 SP中
2.下列指令中, 哪個是錯的?
a. MOV SS:[BX+DI],1000H
b. MOV DX, 1000H
c. MOV WORD PTR [BX],1000H
d. MOV DS, 2000H
解:D錯誤: 立即數不能直接到段暫存器
1. 指出下列的錯誤:
1) MOV AH, BX
2) MOV [BX], [SI]
3) MOV AX,[SI] [DI]
4) MOV MYDAT [BX][SI], ES:AX
5) MOV BYTE PTR[BX], 1000
6) MOV BX, OFFSET MYDAT[SI]
7) MOV CS, AX
答:
1. 指出下列的錯誤:
1) MOV AH, BX ; 運算元大小不同
2) MOV [BX], [SI] ; 出錯:不能記憶體與記憶體之間直接傳輸資料
3) MOV AX,[SI] [DI] ; 出錯: [SI][DI]不能作為基址相對定址的組合
4) MOV MYDAT [BX][SI], ES:AX ; 出錯:不能記憶體與記憶體之間直接傳輸資料
5) MOV BYTE PTR[BX], 1000 ; 運算元大小不同
6) MOV BX, OFFSET MYDAT[SI] ; offset指令是獲取標號處的地址,這裡應刪除[SI]
7) MOV CS, AX ; 出錯: CS 段暫存器不能作為第一運算元
2. 給出DS = 6400h, BX = 0743h, SS=6500H, BP = CA40h, SI = 2100h 和 DI = 04A4h, 而且BETA是一個偏移量為0202h的資料項 (名稱/變數), 對於下列每一條指令指出其定址方式且計算出源運算元和目標運算元的20-位的實體地址:
• (i) MOV AL, [BP][SI] ; 基址變址定址 72B40H
• (ii) MOV [BX + DI + 4], AX ; 相對基址變址定址 64BEBH
• (iii) MOV BETA, BL ; 直接定址 64202H
• (iv) MOV AH, [BP][DI + BETA] ; 相對基址變址變址 710E6
• (v) LODSB ; 暫存器定址 66100H
相關推薦
(2011.11.06)組合語言第02章習題(定址方式與組合語言程式的組織)
組合語言第02章習題(定址方式與組合語言程式的組織) 2.2 有兩個16位的字1EE5H 和 2A3CH 儲存在IBM PC 的000B0H 和000B03H 的記憶體單元中,請以圖表的形式說明記憶體中的儲存情況 解:(遵照高高低低的原則)
具體數學第二版第四章習題(4)
46 (1)假設$j^{'}j-k^{'}k=Gcd(j,k)$,那麼有$n^{j^{'}j}=n^{k^{'}k}n^{Gcd(j,k)}$,所以如果$n^{j^{'}j}=pm+1,n^{k^{'}k}=qm+1\rightarrow n^{Gcd(j,k)}=rm+1$ (2)假設$n=pq$並且$p
SLAM從入門到放棄:SLAM十四講第十章習題(1-4)
以下均為簡單筆記,如有錯誤,請多多指教。 證明式 K =
SLAM從入門到放棄:SLAM十四講第七章習題(9)
以下均為簡單筆記,如有錯誤,請多多指教。 使用Sophus的SE3類,自己設計g2o的節點與邊,實現PnP和ICP的優化。 答:對於PnP問題,需要重新設計的節點包括相機節點、Landmark節點和一
SLAM從入門到放棄:SLAM十四講第七章習題(10)
以下均為簡單筆記,如有錯誤,請多多指教。 在Ceres中實現PnP和ICP的優化。 答:程式碼如下,其結果與g2o差異不大。不過感覺程式碼看起來更加簡潔,個人比較喜歡ceres。 PnP IC
SLAM從入門到放棄:SLAM十四講第八章習題(1-3)
以下均為簡單筆記,如有錯誤,請多多指教。 除了LK光流之外,還有哪些光流方法?它們各有什麼特點? 答:此答案轉載於:https://blog.csdn.net/iloveayu/article/det
SLAM從入門到放棄:SLAM十四講第八章習題(4)
以下均為簡單筆記,如有錯誤,請多多指教。 使用Ceres實現RGB-D上稀疏直接法和半稠密直接法。 答:由於稀疏直接法和半稠密直接法並沒有本質區別,所以此處只提供了稀疏直接法的計算結果。我的實驗結果發現,在同樣的資料集上g2o和Ceres的結果似乎不太一樣,目
具體數學第二版第四章習題(1)
1 令$n=2^{a}3^{b}5^{c}$,它的因子個數為$k=(a+1)(b+1)(c+1)$。所以$k=1,2,3,4,5,6$時對應的$n=1,2,4,6,16,12$ 2 $Gcd(n,m)*Lcm(n,m)=n*m$ $Gcd((n)mod(m),m)*Lcm((n)mod(m),m)=(n)
具體數學第二版第三章習題(4)
46 (1)證明: 首先有$2n(n+1)=\left \lfloor 2n(n+1)+\frac{1}{2} \right \rfloor=\left \lfloor 2(n^{2}+n+\frac{1}{4}) \right \rfloor=\left \lfloor 2(n+\frac{1}{2})^
具體數學第二版第四章習題(3)
31 $(b)mod(d)=1\rightarrow (b^{m})mod(d)=((kd+1)^{m})mod(d)=1$ 所以$((a_{m}a_{m-1}...a_{1}a_{0})_{b}=\sum_{k=0}^{m}a_{k}b^{k})mod(d)=\sum_{k=0}^{m}a_{k}$ 也就
具體數學第二版第四章習題(2)
16 $\frac{1}{e_{1}}=\frac{1}{2},\frac{1}{e_{1}}+\frac{1}{e_{2}}=\frac{5}{6},\frac{1}{e_{1}}+\frac{1}{e_{2}}+\frac{1}{e_{3}}=\frac{41}{42}$,由此猜測$\sum_{i=1}^
具體數學第二版第三章習題(3)
31 $\left \lfloor x \right \rfloor+\left \lfloor y \right \rfloor+\left \lfloor x+y \right \rfloor=\left \lfloor x+\left \lfloor y \right \rfloor \right \r
SLAM從入門到放棄:SLAM十四講第四章習題(1-4)
以下均為簡單筆記,如有錯誤,請多多指教。 驗證SO(3)SO(3)SO(3)、SE(3)SE(3)SE(3)和Sim(3)Sim(3)Sim(3)關於乘法成群。 證: 已知SO(3)={R∈R3×3
《演算法競賽入門經典(第二版)》第三章 習題(1-5)
習題3-1 得分(UVa1585 Score) #include<iostream> #include<stdio.h> #include<string.h> using namespace std; int main(){
Python核心程式設計v2.0 第13章習題(下)
13. 大概寫了下設想的樣式,stock函式中的價格,應該由市場來呼叫,每日更改。這個地方設成定值,就沒寫程式驗證了。 核心在於使用者再去呼叫當時儲存的stock類時,price已經改變就有了利潤。 stack類只應該是和這隻股票相關的資料。股票當日價格,
6.4Android程式設計權威指南(第3版)————第六章程式碼(報告編譯版本、限制作弊次數)
報告編譯版本 關鍵程式碼 xml檔案 <TextView android:id="@+id/tv_compile_version" android:layout_width="wrap_content" android:layout
刷紫書第三章例題(例題3-4,3-5,3-6)
例題3-4 Master-Mind Hints UVA - 340 MasterMind is a game for two players. One of them, Designer, selects a secret code. The other, B
資料表示、定址方式與指令系統_計算機系統結構第二章_自考本科
概要:計算機系統結構第二章資料表示、定址方式與指令系統知識點小結 一、資料表示(應用) 1、資料表示的定義,資料表示與資料結構的關係 定義:能由計算機硬體識別和引用的資料型別,表現再它有對這種型別的資料進行操作的指令和運算部件 &nbs
python 核心編程 第六章習題
創建 per 列表 一個 join def print 習題 反轉 6-6 創建一個類似 string.strip() 函數 方法一 低效方法 大量復制和生成子串對象 def str_strip(s): while len(s)>=2:
核心編程第二版第六章習題
算術 幫我 __main__ div index spa end new 字典序 6–1. 字符串.string 模塊中是否有一種字符串方法或者函數可以幫我鑒定一下一個字符串是否是另一個大字符串的一部分? 成員關系操作符in obj in seq 6&nd