在代码段中安排自己定义的数据
1、編程計算下面八個字型數據之和,將結果存放在ax寄存器中
1,2,3,4,5,6,7,8
通過前面的學習:將這一段數據安排在一段連續的內存中——>通過Loop指令,用add ax, ds:[bx] ? ? add bx,2 ——>設置內存地址,把ds:[bx]指向“1”的位置
以前是通過e指令去修改一段內存(不安全)——》如何讓系統分配給我們內存?(加載的過程其實就是系統分配給程序內存的過程)——》只要把數據寫在源文件就行了
程序取得所需空間的方法有兩種:一是在加載程序的時候為程序分配,再就是程序在執行過程中向系統申請。(不討論第二種方法)
定義數據:dw(define word)word表示字型數據 【用-d cs:0查看會發現是字型數據】
如何不用start:
在dw上一行寫jmp begin
在mov bx,3左邊寫begin
2、編程計算以下八個數據的和,結果存在ax寄存器中
0123h ? 0456h ? 0789h ?0abch ? 0defh? 0fed ?0cbah ? 0987h
理解:
程序 中的指令就是要對這八個數據進行累加,可這八個數據在哪?由于他們在代碼段中,程序在運行的時候cs中存放代碼段的段地址,所以可以從CS中得到他們的段地址。他們的偏移地址是多少呢?因為用dw定義的數據處于代碼段的最開始,所以偏移地址為0,這八個數據就在代碼段的偏移0、2、4、6、8、A 、C、 E處。程序運行時,他們的地址就是cs:0、cs:2、cs:4、cs:6,cs:8、cs:A、cs:C,cs:E。
程序中用bx存放加2遞增的偏移地址,用循環來進行累加。在循環開始前,設置bx=0,cs:bx指向第一個數據所在的字單元。
上面的程序在運行時可能會出問題:因為程序入口處不是我們所希望執行的指令
如何讓這個程序在編譯和鏈接后再系統中直接運行呢?我們可以在源程序中指明程序的入口所在。
如下:
總結
以上是生活随笔為你收集整理的在代码段中安排自己定义的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据异常HTML,@ Html.Drop
- 下一篇: android8.0更新手机,安卓微信8