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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《汇编语言》实验五课程

發布時間:2025/7/25 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《汇编语言》实验五课程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗1

將下面的程序編譯鏈接, 用Debug加載、跟蹤,然后回答問題

assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h data endsstack segmentdw 0,0,0,0,0,0,0,0 stack endsstart: mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcode endsend start

(1)CPU執行程序,程序返回前,data段中的數據為多少?

答:23 01 56 04 89 07 BC 0A EF 0D ED 0F BA 0C 87 09

(2)CPU執行程序,程序返回前,cs=076C、ss=076B、ds=076A。

(3)設程序加載后,code段的段地址為X,則data段的段地址為X-2,stack段的段地址為X-1。

?

實驗2

將下面的程序編譯、連接,用Debug加載、跟蹤,然后回答問題。

?

(1)CPU執行程序,程序返回前,data段中的數據為多少?

答:23 01 56 04 00 00 00 00 00 00 00 00 00 00 00 00

(2)CPU執行程序,程序返回前,cs=076C、ss=076B、ds=076A。

(3)設程序加載后,code段的段地址為X,則data段的段地址為X-2,stack段的段地址為X-1。

?(4)對于如下定義的段:

name segment

name ends

如果段中的數據占N個字節,則程序加載后,該段實際占用的空間為(N/16+1)*16。

?

實驗3

將下面的程序編譯、連接,用Debug加載、跟蹤,然后回答問題。

assume cs:code, ds:data, ss:stackcode segmentstart: mov ax,stackmov ss, axmov sp,16mov ax, datamov ds, axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcode endsdata segmentdw 0123h, 0456hdata endsstack segmentdw 0,0stack endsend start

?

(1)CPU執行程序,程序返回前,data段中的數據為多少?

答:23 01 56 04 00 00 00 00 00 00 00 00 00 00 00 00

(2)CPU執行程序,程序返回前,cs=076A、ss=076E、ds=076D。

(3)設程序加載后,code段的段地址為X,則data段的段地址為X+3,stack段的段地址為X+4。

實驗4

如果將(1)、(2)、(3)題中的最后一條偽指令“end start”改為“end”(也就是說,不知名程序的入口),則哪個程序仍然可以正確執行?請說明原因

?

assume cs:code a segmentdb 1,2,3,4,5,6,7,8 a endsb segmentdb 1,2,3,4,5,6,7,8 b endsc segment ; db 0,0,0,0,0,0,0,0 c ends ; code segment start: mov ax,amov ds,axmov ax,cmov es,axmov bx,0mov cx,8 s1: mov al,ds:[bx]mov es:[bx],alinc bxloop s1mov ax,bmov ds,axmov bx,0mov cx,8 s2: mov al,ds:[bx]add es:[bx],alinc bxloop s2mov ax,4c00hint 21hcode endsend start

實驗一

實驗二

?

?

?實驗三

?

?

經過比較發現:實驗1、2不能正確執行,實驗3仍然可以正確執行。

原因:end start變成end,說明不指明程序入口,程序默認從IP=0處執行;實驗3是代碼段在前,而實驗1、2是代碼段在后,說明實驗3中IP=0時就可以執行代碼段的內容。所以實驗3仍可以正確執行。

?

?實驗5

assume cs:code a segmentdb 1,2,3,4,5,6,7,8 a endsb segmentdb 1,2,3,4,5,6,7,8 b endsc segment ; db 0,0,0,0,0,0,0,0 c ends ; code segment start: mov ax,amov ds,axmov ax,cmov es,axmov bx,0mov cx,8 s1: mov al,ds:[bx]mov es:[bx],alinc bxloop s1mov ax,bmov ds,axmov bx,0mov cx,8 s2: mov al,ds:[bx]add es:[bx],alinc bxloop s2mov ax,4c00hint 21hcode endsend start

?

① 在實現數據相加前,邏輯段 c 的 8 個字節:00 00 00 00 00 00 00 00

② 執行完實現加運算的代碼后,邏輯段 c 的 8 個字節:02 04 06 08 0A 0C 0E 10

3.根據①和②的調試,實驗程序正確實現數據相加

?

實驗6

程序如下,編寫code段中的代碼,用push指令將a段中的前8個字型數據,逆序存儲到b段中

assume cs:code a segmentdw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh a endsb segmentdw 0,0,0,0,0,0,0,0 b endscode segment start: mov ax,amov ds,axmov ax,b mov bx,0mov ss,axmov sp,16mov cx,8 s: push [bx]add bx,2loop s mov ax,4c00hint 21h code endsend start

?

轉載于:https://www.cnblogs.com/zwHou/p/10117172.html

總結

以上是生活随笔為你收集整理的《汇编语言》实验五课程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。