外設驅動庫開發筆記17:MS5803壓力變送器驅動
阿新 • • 發佈:2020-11-01
一 實驗結論
1.實驗任務一
使用任意一款文字編輯器,編寫8086彙編源程式ex1.asm。原始碼如下:;ex1.asm assume cs:code code segment mov ax, 0b810h mov ds, ax mov byte ptr ds:[0], 1 mov byte ptr ds:[1], 1 mov byte ptr ds:[2], 2 mov byte ptr ds:[3], 2 mov byte ptr ds:[4], 3 mov byte ptr ds:[5], 3 mov byte ptr ds:[6], 4 mov byte ptr ds:[7要求:使用8086彙編程式編寫、彙編、連結、執行、除錯方法,對ex1.asm進行彙編、連結、執行,使 用debug工具除錯可執行檔案。 使用masm對ex1.asm進行彙編], 4 mov ah, 4ch int 21h code ends end
使用link對ex1.asm進行連結
執行ex1.exe
可以看到出現了四個不同的圖案
在debug中執行ex1.exe
首先使用r命令檢視暫存器的值
使用d命令檢視程式段字首PSP所佔的256個位元組 結合可執行檔案中暫存器CX的值,使用u命令對ex1.exe進行精確反彙編 用r命令檢視CX的值為0031H,故使用u命令對ex1.exe進行精確反彙編結果如下: 使用g命令執行到程式退出執行之前由反彙編後的結果可知line 16 mov ah,4ch的偏移地址為002D,所以使用g 002d這個指令
我們可以看到出現了四個彩色圖案
2.實驗任務二
使用任意一款文字編輯器,編寫8086彙編源程式ex2.asm。原始碼如下:; ex2.asm assume cs:code code segment mov ax, 0b810h mov ds, ax mov bx, 0 mov ax, 101H mov cx, 4 s: mov [bx], ax add bx, 2 add ax, 101H loop s mov ah, 4ch int 21h code ends end要求:使用8086彙編程式編寫、彙編、連結、執行、除錯方法,對ex2.asm進行彙編、連結、執行,使 用debug工具除錯可執行檔案。 使用masm對ex2.asm進行彙編
使用link對ex2.asm進行連結
執行ex2.exe觀察結果
結果:螢幕上方出現了不同顏色的圖案
使用debug工具對程式進行除錯
使用r語言檢視暫存器的值 使用u命令對ex2.exe進行精確反彙編使用g命令除錯到move ah,ac 之前,再用t命令進行單步除錯,最後使用p除錯int 21,結束程式.
沒有出現圖案的原因可能是因為螢幕滾動圖案就小時了,當清屏後就出現了圖案。
把ex2.asm中line9 mov cx, 4 改成 mov cx, 8 ,儲存後重新彙編、連結、執行並觀察結果。螢幕上出現了八個圖案
3.實驗任務三
綜合使用loop,[bx],編寫完整彙編程式,實現向記憶體b800:07b8開始的連續16個字單元重複填充字資料 0237H。 程式碼如下所示:;ex3.asm assume cs:code code segment mov ax,0b800h mov ds,ax mov bx,07b8h mov ax,0237h mov cx,16s: mov [bx],ax add bx,2 loop s mov ah,4ch int 21h code ends end把填充的字資料,從0237H 改成0239H,再次儲存後,彙編、連結、執行,觀察結果。 把填充的字資料,從0237H 改成0437H,再次儲存後,彙編、連結、執行,觀察結果。
4.實驗任務四
編寫完整彙編源程式,實現向記憶體0:200~0:23F依次傳送資料0~63(3FH) 綜合使用[bx]和loop,編寫彙編源程式 程式碼如下所示:;ex4.asm assume cs:code code segment mov ax,0020h mov ds,ax mov bx,0 mov cx,40h s: mov [bx],bl inc bx loop s mov ah,4ch int 21h code ends End
5.實驗任務五
二 實驗總結
還沒寫完,勿評