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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

在代码段中安排自己定义的数据

發(fā)布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在代码段中安排自己定义的数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、編程計算下面八個字型數據之和,將結果存放在ax寄存器中
1,2,3,4,5,6,7,8

通過前面的學習:將這一段數據安排在一段連續(xù)的內存中——>通過Loop指令,用add ax, ds:[bx] ? ? add bx,2 ——>設置內存地址,把ds:[bx]指向“1”的位置

以前是通過e指令去修改一段內存(不安全)——》如何讓系統分配給我們內存?(加載的過程其實就是系統分配給程序內存的過程)——》只要把數據寫在源文件就行了

程序取得所需空間的方法有兩種:一是在加載程序的時候為程序分配,再就是程序在執(zhí)行過程中向系統申請。(不討論第二種方法)

定義數據:dw(define word)word表示字型數據 【用-d cs:0查看會發(fā)現是字型數據】

如何不用start:
在dw上一行寫jmp begin
在mov bx,3左邊寫begin

assume cs:code code segmentjmp begindw 1,2,3,4,5,6,7,8 ;定義八個字型數據 ;上一行是我們自己定義的數據,不是我們自己定義的指令;(start偽指令可以告訴編譯器從哪開始)begin: mov bx,3 ;初始值mov ax,0 ;偏移地址mov cx,8 ;循環(huán)次數addNumber: add ax,cs:[bx]add bx,2 ;計算的是字型數據,所以加2loop addNumbermov ax,4c00Hint 21h code ends end start

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遞增的偏移地址,用循環(huán)來進行累加。在循環(huán)開始前,設置bx=0,cs:bx指向第一個數據所在的字單元。

上面的程序在運行時可能會出問題:因為程序入口處不是我們所希望執(zhí)行的指令
如何讓這個程序在編譯和鏈接后再系統中直接運行呢?我們可以在源程序中指明程序的入口所在。
如下:

總結

以上是生活随笔為你收集整理的在代码段中安排自己定义的数据的全部內容,希望文章能夠幫你解決所遇到的問題。

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