王爽彙編語言答案(edition 4th)

王爽彙編語言答案(edition 4th)

檢測點

chapter1

檢測點1.1

(1)1個CPU的尋址能力爲8KB,那麼它的地址總線的寬度爲13
(2)1KB的存儲器有個存儲單元。存儲單元的編號從00001023
(3)1KB的存儲器能夠存儲個8192bit,1024個Byte。
(4)1GB、1MB、1KB分別是2^30 , 2^20 , 2^10Byte。
(5)8080、808八、8028六、80386的地址總線寬度分別爲16根、20根、24根、32根,則它們的尋址能力分別爲:64(KB)、1(MB)、16(MB)、4(GB)。
(6)8080、808八、808六、8028六、80386的數據總線寬度分別爲8根、8根、16根、16根、32根則它們一次能夠傳送的數據爲:1(B)、1(B)、2(B)、2(B)、4(B)
(7)從內存中讀取1024字節的數據,8086至少要讀512次,80386至少要讀256次。
(8)在存儲器中,數據和程序以形式二進制存放。html

chapter2

檢測點2.1

1.寫出每條彙編指令執行後相關寄存器中的值。編程

指令 寄存器
mov ax, 62627 AX = F4A3H
mov ah, 31H AX = 31A3H
mov al, 23H AX = 3123H
add ax, ax AX = 6246H
mov bx, 826CH BX = 826CH
mov cx, ax CX = 6246H
mov ax, bx AX = 826CH
add ax, bx AX = 04D8H
mov al, bh AX = 0482H
mov ah, bl AX = 6C82H
add ah, ah AX = D882H
add al, 6 AX = D888H
add al, al AX = D810H
mov ax, cx AX = 6246H
  1. 只能使用目前學過的彙編指令,最多使用4條指令,編程計算2的4次方。
mov ax, 2  ;ax = 2
add ax, ax ;ax = 4
add ax, ax ;ax = 8
add ax, ax ;ax = 16

檢測點2.2

(1)給定段地址爲0001H,僅經過變化偏移地址尋址,CPU的尋址範圍爲00010H1000FH
(2)有一數據存放在內存20000H單元中,現給定段地址爲SA,若想用偏移地址尋到此單元。則SA應知足的條件是:最小爲1001H,最大爲2000H工具

檢測點2.3

下面的3條指令執行後,CPU幾回修改IP?都是在何時?最後IP中的值是多少?學習

mov ax, bx
sub ax, ax
jmp ax

**共計4次修改IP的值:翻譯

  1. mov ax, bx 指令加載至指令緩衝器後
  2. sub ax, ax 指令加載至指令緩衝器後
  3. jmp ax 指令加載至指令緩衝器後
  4. jmp ax 執行後,IP變爲0000H**

chapter3

檢測點3.1

  1. 在Debug中,用「d 0:0 1f」查看內存,結果以下:
0000:0000 70 80 f0 30 EF 60 30 E2-00 80 80 12 66 20 22 60  
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88

下面的程序執行前,AX=0,BX=0,寫出每條彙編指令執行完後相關寄存器中的值。debug

指令 寄存器
mov ax, 1
mov ds, ax
mov ax, [0000] AX=2662H
mov bx, [0001] BX=E626H
mov ax, bx AX=E626H
mov ax, [0000] AX=2662H
mov bx, [0002] BX=D6E6H
add ax, bx AX=FD48H
add ax, [0004] AX=2C14H
mov ax, 0 AX=0000H
mov al, [0002] AX=00E6H
mov bx, 0 BX=0000H
mov bl, [000C] BX=0026H
add al, bl AX=000CH
  1. 內存中的狀況如圖所示

各寄存器的初始值:CS=2000H,IP=0,DS=1000H,AX=0,BX=0;3d

  1. 寫出CPU執行的指令序列(用匯編指令寫出)。
  2. 寫出CPU執行每條指令後,CS、IP和相關寄存器中的數值。
  3. 再次體會:數據和程序有區別嗎?如何肯定內存中的信息哪些是數據,哪些是程序?

chapter4

chapter5

chapter6

chapter7

chapter8

chapter9

chapter10

chapter11

chapter12

chapter13

chapter14

chapter15

chapter16

實驗

實驗1 查看CPU和內存,用機器指令和彙編指令編程

Debug的使用

什麼是Debug:
Debug是DOS、Windows都提供的實模式(8086方式)程序的調試工具。使用它,能夠查看CPU各類寄存器中的內容、內存的狀況和在機器碼級跟蹤程序的運行。調試

Debug的命令:code

  1. 用Debug的R命令查看、改變CPU寄存器的內容;
  2. 用Debug的D命令查看內存中的內容;
  3. 用Debug的E命令改寫內存中的內容;
  4. 用Debug的U命令將內存中的機器指令翻譯成彙編指令;
  5. 用Debug的T命令執行一條機器指令;
  6. 用Debug的A命令以彙編指令的格式在內存中寫入一條機器指令。
    Debug的命令比較多,共有20多個,但這6個命令是和彙編學習密切相關的。

如何進入Debug:
如今經過其餘的虛擬機方式,還原到窗口並不現實,至關麻煩,這裏採用Dosbox模擬運行。htm

具體搭建可見,不是我寫的

關於dubug更詳細的操做能夠看原書,或者下載非整書,截取了debug部分的內容,提取碼za88

注意在debug中,全部的數字均爲16進製表示,mov ax,1839後,ax就爲1893

第一個小實驗

第三個小實驗
會發現內容沒法更改圖中紅圈所示。

第四個小實驗
e命令選的內存爲顯存內存,DOS界面被更改。

相關文章
相關標籤/搜索