日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编语言实验 3 编程、编译、连接、跟踪

發(fā)布時(shí)間:2024/9/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编语言实验 3 编程、编译、连接、跟踪 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

實(shí)驗(yàn)內(nèi)容

(1)第1步,編寫匯編源程序t1.asm, 源程序代碼如下:

  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

因?yàn)閷?duì)匯編語言的一系列還不熟練,所以花了點(diǎn)時(shí)間,終于進(jìn)去了。

?

?

?

對(duì)源程序 t1.asm 進(jìn)行匯編、連接、運(yùn)行、調(diào)試?

(1) 運(yùn)行程序,觀察程序輸出結(jié)果是什么?

輸出結(jié)果為36

(2) 將 line4和line9種寄存器dl 的值分別修改為 0~9 中任何一個(gè)數(shù)字,重新匯編→ 連接→運(yùn)行,觀察結(jié)果的變化。??

我將line4中的值改為1,line9中的值改為4,

?

(3) 用debug對(duì)生成的可執(zhí)行文件 t1.exe 進(jìn)行調(diào)試。

① 使用 r 命令查看。觀察寄存器 cx 的值是 多少;觀察寄存器 ds 和 cs 的值是多 少,它們之間是否滿足關(guān)系(cs)=(ds)+10H??

cx為0016H,cs為076A,ds為075A,符合關(guān)系(cs)=(ds)+10H。

② PSP(程序段前綴)的頭兩個(gè)字節(jié)是CD 20, 用debug查看PSP的內(nèi)容,驗(yàn)證是否 如此。

?

的確如此

③ 使用 u 命令對(duì) t1.exe 進(jìn)行反匯編,觀察反匯編得到的源代碼。

反匯編得到的如圖所示

④ 使用 t 命令和 p 命令(遇到 int 命令時(shí),用 p 命令)單步調(diào)試,觀察結(jié)果。?

?

?出現(xiàn)了3

?

出現(xiàn)了6

組成了最后t1.exe的36。

?(2)第1步,編寫匯編源程序t2.asm,源程序代碼如下

assume cs:code

code segment

    mov ax,0b800h

    mov ds,ax

?

    mov bx,0

    mov [bx],0433h

?

?   ? ?add bx,2

    mov [bx],0436h

    mov ax,4c00h

    int 21h

code ends

end

第2步,對(duì)源程序 t2.asm 進(jìn)行匯編、連接、運(yùn)行、調(diào)試

(1) 對(duì)t2.asm進(jìn)行匯編、連接后,得到可執(zhí)行文件t2.exe。運(yùn)行t2.exe,觀察程序運(yùn)行 結(jié)果,驗(yàn)證是否在屏幕左上方出現(xiàn)紅色的數(shù)值36

經(jīng)過cls之后,重新輸入t2,出現(xiàn)了目標(biāo)結(jié)果

(2) 如果(1)結(jié)果得到驗(yàn)證,重新打開t2.asm,嘗試將源代碼中l(wèi)ine7的0433h→0432h, line10 的 0436h→0439h, 然后重新匯編、連接,得到可執(zhí)行文件 t2.exe。使用 cls 命令清 屏后,再次觀察程序運(yùn)行結(jié)果。

修改成功

?

?出現(xiàn)了紅色的29

(3) 如果(1)結(jié)果得到驗(yàn)證,重新打開t2.asm,嘗試將源代碼中l(wèi)ine7的0433h→0333h, line10 的 0436h→0336h, 然后重新匯編、連接,得到可執(zhí)行文件 t2.exe。使用 cls 命令清 屏后,再次觀察程序運(yùn)行結(jié)果。?

?

修改成功

出現(xiàn)了藍(lán)色的36

這個(gè)發(fā)現(xiàn)和之前的實(shí)驗(yàn)一最后一部分類似。

實(shí)驗(yàn)一向內(nèi)存從B8100H開始的單元中填寫數(shù)據(jù),每一次填寫的數(shù)據(jù)不一樣會(huì)出現(xiàn)不同的表情符號(hào),而這次編寫代碼0433h舉例來說,mov這個(gè)操作,043三個(gè)字節(jié)決定了顏色的不同,最后一個(gè)字節(jié)決定了輸出的內(nèi)容。而【】符號(hào)似乎就是顏色的填充工具。

分析這次兩個(gè)練習(xí)輸出的不同

    mov ax,0b800h? ? ? ? ? ? ? ? ? ??mov ah,2

    mov ds,ax? ? ? ? ? ? ? ? ? ? ? ? ? ??mov dl,3

    mov bx,0? ? ? ? ? ? ? ? ? ? ? ? ? ? ?add dl,30h

    mov [bx],0433h? ? ? ? ? ? ? ? ? ?mov ah,2

?   ? ?add bx,2? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mov dl,6

    mov [bx],0436h? ? ? ? ? ? ? ? ? ?add dl,30h

第一次有一項(xiàng)add dl,30h即將數(shù)字轉(zhuǎn)換為相對(duì)應(yīng)的ASCII碼打印出來,這個(gè)實(shí)驗(yàn)通過8位寄存器實(shí)現(xiàn),而第二次是通過16位寄存器,直接輸出。

?實(shí)驗(yàn)總結(jié)

通過這次實(shí)驗(yàn),我知道了一個(gè)完整匯編程序的輸入輸出的流程,學(xué)會(huì)了對(duì)于數(shù)字顏色的把控,以及兩種輸出的格式。

?

     

?

轉(zhuǎn)載于:https://www.cnblogs.com/-Cold/p/9865351.html

總結(jié)

以上是生活随笔為你收集整理的汇编语言实验 3 编程、编译、连接、跟踪的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。