【匯編實驗】實驗1 8086匯編指令編碼和調試
四、實驗結論
1. 實驗2
在debug中,使用d命令查看生產日期:
使用e命令修改生產日期和內存單元:
可以發現存儲的還是原來的內容,修改失敗了,因為ROM中存儲的內容只能讀不能寫,所以無法修改。
2. 實驗3
e命令修改內存單元命令:
1 -e b800:0 03 04 03 04 03 04 03 04 03 04
效果截圖:
可以發現修改內存單元后出現了五枚紅心。
f命令批量批量填充命令:
1 -f b800:0f00 0f9f 03 04
效果截圖:
在底部出現了更多的紅心。
3. 實驗四
填空:
-a mov ax, 20 mov ds, ax mov ss, ax mov sp, 30 push [0] ; 執行后,寄存器(sp) = _1020_ push [2] ; 執行后,寄存器(sp) = _3040_ push [4] ; 執行后,寄存器(sp) = _5060_ push [6] ; 執行后,寄存器(sp) = _7080_ pop [6] ; 執行后,寄存器(sp) = _7080_ pop [4] ; 執行后,寄存器(sp) = _5060_ pop [2] ; 執行后,寄存器(sp) = _4030_ pop [0] ; 執行后,寄存器(sp) = _2010_ 問題1:
問題一:邏輯地址:0020:30h;物理地址:00230h。
問題二:
問題三:
問題四:有變換,順序變換了。
4. 實驗5
問題1:並沒有停止,mov ss,ax和mov sp,30 連續執行。
問題2:08 01 是IP地址,即偏移地址。3F 07 是CS地址,即程序段地址,是暫存地址,因為存在中斷,所以需要暫存原來程序的入口,所以存了下來。
5. 實驗6
task6.asm
1 assume cs:code 2 3 code segment 4 start: 5 mov cx, 10 6 mov dl, '0' 7 s: mov ah, 2 8 int 21h 9 add dl, 1 10 loop s 11 12 mov ah, 4ch 13 int 21h 14 code ends 15 end start
查看PSP內容
6. 實驗7
完整源代碼:
assume cs:code code segment mov ax,cs mov ds,ax mov ax,20h mov es,ax mov bx,0 mov cx,cx s: mov al,[bx] mov es:[bx],al inc bx loop s mov ax,4c00h int 21h code ends end
cs是程序入口,cx是程序代碼長度