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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

汇编语言:实验8分析一个奇怪的程序

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编语言:实验8分析一个奇怪的程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗介紹

實驗8 分析一個奇怪的程序

分析下面的程序,在運行前思考:這個程序可以正確返回嗎

運行后再思考:為什么是這種結果

實驗代碼

;實驗8 分析一個奇怪的程序 ;分析下面的程序,在運行前思考:這個程序可以正確返回嗎? ;運行后再思考:為什么是這種結果? assume cs:codesg codesg segmentmov ax,4c00hint 21h start: mov ax,0 s:nop ;nop 什么也不做占1個字節nopmov di,offset s ;di 存放s的位移 8Hmov si,offset s2 ;si 存放s2的位移20H mov ax,cs:[si] ;ax 存放 jmp short s1指令數據 EBF6(F6 = -9) 實質是往前移9個,后面顯示的jmp short s1 會轉化成 jmp (ip)mov cs:[di],ax ;將s:nop 存ax中的數據也就是 EBF6 s0:jmp short s ;跳轉到標號s處執行指令 jmp 指令,為數據 EBF6 往偏移9個位置剛好是cs:0的位置,所以能正確返回 s1:mov ax,0int 21hmov ax,0 s2:jmp short s1 ;占2個字節nopcodesg ends end start

實驗分析

代碼是順序結構進行從start標號開始執行,一直到s0 都沒有進行任何的轉移,執行到 jmp short s時 ,然后cs:ip又會指向標號s處的指令,為jmp 指令 數據為EBF6 ,其中F6代表要偏移的位置 轉為有符號的8位二進制是-10 ,就是往前移10個字節(包含本身所占字節數) 剛好指向code段開始 翻譯成jmp 指令就是 jmp 0!然后指向 mov ax,4c00,int 21h。所以程序可以正確的返回

這里最重要的是要理解jmp 指令的本質,短轉移它的二進制數的EBF6,F6代表的是偏移量,然而顯示的jmp指令內容是 jmp (ip)!(ip)會根據偏移量自動計算!所以賦值jmp指令內容 顯示的匯編指令 是變動的,而二進制數卻不是變動的



實驗結果

結果當然也在我們的意料之后,能正確的結束程序


新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的汇编语言:实验8分析一个奇怪的程序的全部內容,希望文章能夠幫你解決所遇到的問題。

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