汇编语言中,DS与BX有何区别?怎么搭配使用?(BX是通用寄存器)
首先注意:BX是一個(gè)通用寄存器,里面存放的不一定就是一個(gè)基地址,也可以放偏移量或者其他臨時(shí)數(shù)據(jù)。
通用寄存器:A/B/C/D X 4個(gè),SP,BP,SI,DI 4個(gè)
專用寄存器:SP,IP和FLAGS 3個(gè)16位寄存器。
問:既然DS存放的就是數(shù)據(jù)段的基地址,為何BX還要存放基地址?
答:DS是段寄存器 一般放的是數(shù)據(jù)段的段地址
至于BX 是一個(gè)靈活的寄存器 可以用它來做許多事情 當(dāng)然也可以用來當(dāng)指針 樓主所謂數(shù)據(jù)段的基地址是這個(gè)段的起始地址 要說他是基地址也沒有錯(cuò) 但是bx里放的是某個(gè)字節(jié)或字的地址用[bx]來訪問。DS放段地址,BX是通用寄存器.
疑問:SP到底是通用寄存器還是專用寄存器?
答:好像都可以,Intel為什么把SP設(shè)計(jì)成通用寄存器,這樣我也覺得有些奇怪。
SP除了作棧頂指針外,你還可以用SP來完成加減乘除等算術(shù)和邏輯操作。
當(dāng)然這樣做的前提是這些操作過程中不會(huì)用到堆棧。
通常不會(huì)用到SP的通用功能。不過我倒是見到過,就是在一些加密用的殼里這樣用,
來達(dá)到反跟蹤效果
問:bx寄存器與ds段寄存器的區(qū)別. 為什么說,用BX做基地址的指令,默認(rèn)采用ds段寄存器指向的數(shù)據(jù)段?
答:ds與bx配合,es與dx配合,cx作為計(jì)數(shù)器。這既是cpu硬件設(shè)計(jì)使然,也是軟件設(shè)計(jì)的標(biāo)準(zhǔn)用法,就如圍棋中的定式,你必須這么用。bx是提供偏移地址。
問:匯編語言中[bx],和(bx)的區(qū)別
(bx)是僅僅指bx寄存器的內(nèi)容,書寫好看明了;
[bx]是指偏移地址,指的是以寄存器BX的內(nèi)容為偏移的路徑大小,[bx]:也就是BX的內(nèi)容為偏移地址,可以加上16d*ds,得到內(nèi)存地址去內(nèi)存中取數(shù)據(jù)。
[bx]是指偏移地址,默認(rèn)段地址為ds
(bx)是描述語句(這樣寫是為了解釋方便,指令當(dāng)中可不能這樣寫)是指bx中的內(nèi)容,
部分整理自百度知道
總結(jié)
以上是生活随笔為你收集整理的汇编语言中,DS与BX有何区别?怎么搭配使用?(BX是通用寄存器)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SS, SP, BP 三个寄存器的不同和
- 下一篇: 汇编语言中的乘除法用到的寄存器问题(较详