實驗報告:實驗三
練習一
assume cs:code
code segment
mov ah,2
mov dl,3
add dl,30h
int 21h
mov ah,2
mov dl,6
add dl,30h
int 21h
mov ah,4ch
int 21h
code ends
end
對以上代碼進行匯編、連接、調試、運行。結果如下:
結果為36
然後我將第四行和第九行的dl的值分別改為5和4繼續匯編、連接、調試、運行:
結果變為了54。
然後使用r命令查看cx、ds、cs的值發現滿足cs=ds+10h
然後用debug反匯編得出偏移地址0000到0015的為源代碼部分
再用d命令和r命令查看PSP的頭兩個字節驗證確實為CD 20。
然後用p和t命令單步調試,遇到int用p命令。如下圖
返現依次輸出的是5和4(與之前改的一致)
練習二
assume cs:code
code segment
mov ax, 0b800h
mov ds, ax
mov bx,0
mov [bx],0333h
add bx,2
mov [bx],0336h
mov ax,4c00h
int 21h
code ends
end
對t2代碼進行匯編、連接、調試、運行。結果如下:
輸出紅色的36
將源代碼中line7的0433h改為0432h, line10 的 0436h改為0439h,然後進行匯編、連接、調試、運行:
結果如下輸出紅色29
試將源代碼中line7的0433h→0333h, line10 的 0436h→0336h,然後進行匯編、連接、調試、運行:
結果如下輸出藍綠色的36
總結感想:
通過本次實驗一我明白了計算機通過每次單個輸出dl的值來完成對字符的輸出(即輸出54需要輸出兩次)。
由於最後36顏色的改變是修改了寄存器中的高字節,改變數字修改的低字節,猜測高字節控制顏色,低字節控制數據。
熟悉了匯編中對稍微復雜的源代碼匯編、連接、調試、運行等的過程。
實驗報告:實驗三