王爽《組合語言》實驗8 分析一個奇怪的程式
我將畫出記憶體中內容來解釋這個實驗,易於理解。
進入debug模式,最開始各個暫存器的狀態:
AX=0000 BX=0000 CX=0023 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B15 ES=0B15 SS=0B25 CS=0B25 IP=0005 NV UP EI PL NZ NA PO NC
0B25:0005 B80000 MOV AX,0000
在執行到 mov di,offset s之前,記憶體是這樣的:
即從0b25:5執行到0b25:9。
0b25:a-ob25:15這段程式碼實際上是將s2開始的兩個位元組複製到s開始的兩個位元組中,即覆蓋了s中的兩個nop
mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax
執行完這段之後,記憶體如下
繼續執行,IP暫存器指向0b25:16(即S0),執行jmp指令後會跳回到S處。再執行S處的jmp指令,用當前指令後的第一個位元組a加上偏移F6,得到00,即會跳轉到0b25:0,執行mov ax,4c00h int 21,正常結束程式。
相關推薦
王爽《組合語言》實驗8 分析一個奇怪的程式
我將畫出記憶體中內容來解釋這個實驗,易於理解。 進入debug模式,最開始各個暫存器的狀態: AX=0000 BX=0000 CX=0023 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B15 ES
王爽 組合語言 實驗7 定址方式在結構化資料訪問中的應用,用棧實現
assume cs:codesg data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db
王爽-組合語言第三版實驗7
;1. 資料組織 data 中資料當成陣列,table中資料當成結構體。 ;2. data 用si來定址, table 用 bx , di, idata來定址 assume cs:codesg , ss:stacksg data segment db '1975','1976','1977','1978
王爽 組合語言 第二版 實驗七 定址方式在結構化資料訪問中的使用 原始碼
這是學習彙編以來遇到的最繁瑣的一個程式,其實思路理清了也就是那麼回事,但還是花了一整個晚上才把它寫出來,晒晒 assume cs:code data segment db '1975','1976','1977','1978','1979','1980','1981
最強大的王爽組合語言學習環境使用教程
最強大的王爽組合語言學習環境使用教程 一、前言 這是採用VMwere Workstation 12 pro虛擬機器軟體,搭建的MS-DOS學習環境,在windowsXP/8/10及linux中均可以使用,在這個環境中,我集成了CCDOS中文系統,pdos中文系統,使
王爽組合語言綜合研究-函式如何接收不定數量的引數
1、c語言如何傳遞引數 編寫這樣一個程式試驗 void showchar(char a,int b); main() { showchar('a',2); } void showchar(char a,int b) { *(char far *)(0xb8000000 + 160*10 + 80
windows10中最強大王爽組合語言學習環境
一、前言 這是採用VMwere Workstation12 pro虛擬機器軟體,搭建的MS-DOS學習環境,在windowsXP/8/10及linux中均可以使用,在這個環境中,我集成了CCDOS中文系統,pdos中文系統,使用這些系統,可以進行中文輸入與顯示。還集成
王爽組合語言課程設計1
;=============================================================================== ;課程設計1 ;將實驗7中的po
實驗一 第一個Android程式和Activity生命週期
實驗一 第一個Android程式和Activity生命週期 實驗目的 實驗要求 工程程式碼 實驗目的 生成執行第一個Android程式,熟悉瞭解Android手機開發平臺的基本構成和使用方法,熟悉Android應用
TensorFlow技術解析與實戰 8 第一個tensorflow程式
TensorFlow的執行方式分如下4步: (1)載入資料及定義超引數 (2)構建網路 (3)訓練模型 (4)評估模型和進行預測 # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding(
王爽《組合語言》第八章實驗七 題目分析解答
王爽老師的《組合語言》是很好的一本彙編書,裡面用通俗的例子講清楚了很多讓彙編初學者一直困惑的難點。比如暫存器分段定址、各種暫存器的作用等等。 第八章是這本書的一個總結性的章節,後面也給出了一道比較綜合的題目,完成這道題是對之前學習的檢驗,所以要繼續往下學習,這道題是必須完成
王爽《組合語言》(第三版) 實驗8、9:
下面的程式簡單分析了一下: assume cs:code code segment mov ax, 4c00H int 21h s
【組合語言】(王爽著第三版)實驗二
實驗二 實驗任務(一) 實驗前要求我們將書本P74的程式段按理論分析,將結果進行填空。之後用Debug,將該程式段寫入記憶體,逐條執行之後, 根據指令執行後的實際執行的結果填空如下。 mov ax,0021 mov ax , ffff &n
《組合語言第三版》王爽學習歷程——實驗16
編寫包含多個功能子程式的中斷例程 要求: 安裝一個新的int 7ch中斷例程,為顯示輸出提供如下功能: (1)、清屏; (2)、設定前景色; (3)、設定背景色; (4)、向上滾動一行; 入口引數說明如下。 (1)、用ah暫存器傳遞功能號:0表示
王爽《組合語言》第三版-實驗9 根據材料程式設計
assume cs:code,ds:data data segment ;在資料段定義字串 db 'Welcome to masm!' data ends code segment start: mov ax,data mov ds,ax mov ax,0b800h
組合語言(王爽第三版)實驗7 定址方式在結構化資料訪問中的應用
這個實驗我自己摸索了好幾個小時才弄出來,最後想通了發現自己把問題想複雜了。 1、個人認為最簡單的方法 assume cs:code,ds:data data segment db '1975','1976','1977','1978','1979','1980','19
組合語言(王爽第三版)實驗4
1.程式設計:向記憶體0:200H~0:23fH依次傳送資料0~63(3FH)程式分析:【1】記憶體0:200H~0:23fH空間與0020:0-0020:3f記憶體空間是一樣的,(這個不會?oh!My God!,實體地址是唯一的,但邏輯地址組合是多種的。)【2】因為偏移地址
組合語言 第三版 王爽 實驗6 更改大寫字母
題目: 將如圖所示記憶體地址處的小寫字母改為大寫。 注意:si的值每次二重迴圈之前需要重置。 程式碼:assume cs:code,ds:data,ss:stack data segment db '
王爽《組合語言》第三版 第十章 實驗十
1、顯示字串 程式碼如下: assume cs:code data segment db 'Welcome to masm!', 0 data ends code segment start:
組合語言 第三版 王爽 實驗9 根據材料程式設計
題目: 注意事項: 1.windows 7下執行可能看不到效果,我這裡是這樣,安裝xp解決。 2.橫向比較,多篇教程綜合看。 程式碼: assume cs:code,ds:data,ss