電子商務(wù)網(wǎng)站建設(shè)策劃書的流程疫情最新政策最新消息
參考書籍:微機原理與接口技術(shù)——基于8086和Proteus仿真(第3版)p103-105,p119-122.
參考程序是p70,例4-1
在上一篇的基礎(chǔ)上:?
創(chuàng)建項目和匯編文件
寫一個匯編程序并編譯
?雙擊8086的元件圖:
可以修改size?
比如這里修改成:
在asm中寫一個簡單的匯編程序:
DATA SEGMENT ;定義數(shù)據(jù)段X DW 2010H ;定義被加數(shù)Y DW 2011H ;定義加數(shù)RESULT DW ? ;分配和數(shù)存放單元;數(shù)據(jù)段定義結(jié)束
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AXMOV AX,XADD AX,YMOV RESULT,AXJMP $
CODE ENDSEND START
編譯:
?編譯通過:
?調(diào)試:
選中內(nèi)存和寄存器窗口(第一個和第二個):
?F11單步調(diào)試:
發(fā)現(xiàn)上述代碼進入調(diào)試狀態(tài)后會變成這樣:
?
停止調(diào)試,把CODE段寫在前面(注意end start仍然寫在最后):
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AXMOV AX,XADD AX,YMOV RESULT,AXJMP $
CODE ENDS
DATA SEGMENT ;定義數(shù)據(jù)段X DW 2010H ;定義被加數(shù)Y DW 2011H ;定義加數(shù)RESULT DW ? ;分配和數(shù)存放單元;數(shù)據(jù)段定義結(jié)束
DATA ENDS END START
進入 調(diào)試:
?第二個按鈕也可以實現(xiàn)單步調(diào)試:
單擊一次該按鈕后觀察寄存器和內(nèi)存:
?
?觀察到內(nèi)存發(fā)現(xiàn)數(shù)據(jù)段的首地址是0020,而AX被賦值為0002。(因為地址=段首址*10H+偏移地址,偏移地址由于是從0000開始,所以是正確的)
?繼續(xù)單擊:
?
?
?此時執(zhí)行到這條語句:
先看一下result的內(nèi)存內(nèi)容(圖的右側(cè)),發(fā)現(xiàn)我們用?預(yù)留的空間并不是我們預(yù)料的是個隨機數(shù),而是00 00
?
繼續(xù)調(diào)試:
可看出:低字節(jié)送入低地址,高字節(jié)送入高地址
jmp $ 構(gòu)成無條件循環(huán),可以保證仿真持續(xù)進行。$表示當(dāng)前地址。
設(shè)置斷點
雙擊某一行左側(cè):
重新進入調(diào)試狀態(tài)點擊第一個按鈕:
?程序在斷點處停止: