masm汇编标号用法总结
數據(程序)段外使用
數據(程序)段內使用
代碼段中標號一般都有“:”
非代碼段中“:”一般不使用
有:與無:
:的作用是將它前面的標號標記為地址,方便cs:ip指向它(調用子程序)
而數據段中的數據一般不為指令,用不含“:”的標號表示偏移地址也表示后面的數據格式,可利用這個特性方便的引用數據段中的數據
匯編如何識別是代碼段還是數據段呢,是通過assume定義
所以我們也可以在assume處將數據段定義為代碼段,從而使用:來直接定位所需要的標號處數據地址
之所以assume cs:code(此處code代指代碼段,可以重命名)不能去掉,是因為code段中會用到標號,assume cs:code的作用就是默認code段中的標號的段地址為cs
如果我們為數據段也通過assume指定一個段寄存器(假設為ds),那么數據段的標號默認段地址為ds
總結:
:的使用使得前面的標號成為偏移地址,而偏移地址需要搭配段地址才能使用
assume就能將標號處偏移地址與一個段寄存器相聯系(段地址)
沒有“:”的標號不僅表示此處的偏移地址也表示了后面的每個數據所占內存大小
例:
assume ds:Data
Data segment
a db 1,2,3,4,5
b db 0,6,7,8,9
c dw a,b
d dd a,b
Data ends
Data段中標號a中的1可以這樣表示,于是有((Data * 16)+a+0)=a[0]=1,其中0為偏移量
Data段中標號b中的6可以這樣表示,于是有((Data * 16)+b+1) =b[1]=6,其中1為偏移量
a[偏移量]能夠表示數據是因為assume將Data與一段寄存器ds聯系,Data中標號的默認段寄存器就是ds
補充:c為字型數據存儲的是a,b的偏移地址
d為雙字型數據存儲的是a,b的段地址+偏移地址
offset a:取偏移地址
seg a:取段地址
總結
以上是生活随笔為你收集整理的masm汇编标号用法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言 *、 的含义
- 下一篇: 8086汇编常用指令(待解释)