在debug中將執行到line17結束、line19之前,記錄此時:暫存器(ds) = 076a, 暫存器(ss) = 076b, 暫存器(cs) = 0031
假設程式載入後,code段的段位址是x,則,data段的段位址是x-20h, stack的段位址是x-10h。
在debug中將執行到line17結束、line19之前,記錄此時:暫存器(ds) =076a, 暫存器(ss) =076b, 暫存器(cs) = 076c
假設程式載入後,code段的段位址是x,則,data段的段位址是 x-20h, stack的段位址是 x-10h。
在debug中將執行到line17結束、line19之前,記錄此時:暫存器(ds) = 076a, 暫存器(ss) =076c, 暫存器(cs) = 076e
假設程式載入後,code段的段位址是x,則data段的段位址是 x-40h ,stack的段位址是 x-20h 。
在debug中將執行到line9結束、line11之前,記錄此時:暫存器(ds) = 076c, 暫存器(ss) =076e, 暫存器(cs) = 076a
假設程式載入後,code段的段位址是x,則,data段的段位址是x+20h, stack的段位址是x+40h。
基於上述四個實驗任務的實踐、觀察,總結並回答:
解:只有task1_4.asm可以執行。因為將end start替換成end意味著程式未指定開始位置,整個**段都被當做執行**來執行,所以執行資料段中的資料自然會出錯。
反彙編截圖
執行前後
反彙編截圖
執行結果截圖
答:line19的**作用是小寫變大寫,data段line4是設定字型顏色
反彙編結果如下
資料段對於記憶體空間截圖如下
實驗3 多個段的彙編源程式編寫與除錯
一 實驗目的 1.理解和掌握將資料 棧放入不同邏輯段的程式的編寫和除錯 2.理解具有多個段的彙編源程式對應的目標程式執行時,記憶體分配方式 3.掌握大小寫字元的轉換方法 數字字元和數值之間的轉換方法 4.理解並掌握各種定址方式的靈活應用 5.掌握彙編指令loop,and,or,div,mul的用法 ...
實驗3 多個段的彙編源程式編寫與除錯
實驗任務1 assume cs code,ds data data segment db nuist db 5 dup 2 data ends code segment start mov ax,data mov ds,ax mov ax,0b800h mov es,ax mov cx,5 設定迴圈...
8086彙編 包含多個段的程式
assume cs code code segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h start mov bx,0 mov ax,0 mov cx,8 s add ax,cs bx add bx,2 loop s mov ax,...