匯編-寄存器數據的存儲與變化-算術運算對標誌位的影響
實驗3:寄存器數據的存儲與變化-算術運算對標誌位的影響
1.項目設計
將操作數放在2000H和2001H兩個單元中,編程進行以下的算術運算 ,並記錄標誌位的狀態。
(1)41H+3BH,結果放在2002H單元中;
(2)41H+5AH,結果放在2003H單元中;
(3)AFH+7EH,結果放在2004H單元中;
(4)E3H+1DH,結果放在2005H單元中;
(5)41H-3BH,結果放在2006H單元中;
(6)3BH-41H,結果放在2007H單元中;
2.項目實施
(1)寫出指令代碼段,例如41H+3BH
MOV AX, [2000H]
ADD AX, [2001H]
MOV [2002H], AX
(2)寫出指令的機器代碼:
例如上面指令的機器代碼為 A0 00 20
04 01 20
A2 02 20
(3)在debug中調試程序。
3.項目運行
(1)運行每一段指令,按表1格式在項目報告中記錄結果。
實驗步驟:
直接進入DOSBox 進行相關掛載操作
切換至c盤 輸入debug
- -A命令進入編寫代碼界面
- -R查看當前寄存器中指令
- -T查看寄存器下一地址的內容以及相應的機器碼
- -D查看DS內數據存放的結果
1.1)程序1代碼以及機器碼及結果
分別寫入三條語句來進行計算41H+3BH並放到2002H單元內
按ENTER鍵 再輸入R查看當前寄存器中的內容,可以看到對應匯編語句所對應的機器碼。 由於涉及到32位與64位操作系統,所生成的機器碼會有所差別。
使用-T查看寄存器下一地址的內容和相應的機器碼
註意:使用-T查看直到運行完最後一條匯編指令為止。
此時,使用-D xxx xxx
即-D 2002 2002即可查看寫在2002H單元內的內容
可知值為7C 相對於的NV UP EI PL NZ NA PO NC 為狀態標誌 ,具體參數參見此圖
當然例題1也能 使用AX 立即數計算 其也能計算41H+3BH的值。結果存在2002H 結果都是7C 但機器碼不同
如圖:
2,1)程序2的相關指令和結果
得到對應的SF,ZF,CF
3)DEBUG寫入代碼進行T測試
3.3)程序3代碼以及機器碼
3.3)程序3結果及SFZFCF
4)找到02的值
4.1)程序4代碼以及機器碼
4.3)得到SF,ZF,CF
5.1)程序5代碼以及機器碼
5.2)得到SF,ZF,CF與2006h的值
6.1)程序6代碼以及機器碼
6.2)程序6結果及SFZFCF
7.1)程序7代碼以及機器碼以及結果
個人得到的程序運行結果及CF,SF,ZF值
相關參考資料
機器碼的構成結構
DOSBox下debug的使用 https://www.jianshu.com/p/bf7caf046420
機器碼 與 匯編指令的關系https://blog.csdn.net/z3410218746/article/details/7485602
80x86尋址方式及指令系統https://wenku.baidu.com/view/d9bb76a40029bd64783e2c6a.html
計算機組成原理實驗報告單算數運算及對標誌位的影響https://wenku.baidu.com/view/5ed10f72d1f34693dbef3e12.html
匯編-寄存器數據的存儲與變化-算術運算對標誌位的影響