汇编语言中,DS与BX有何区别?怎么搭配使用?(BX是通用寄存器)

首先注意:BX是一个通用寄存器,里面存放的不一定就是一个基地址,也可以放偏移量或者其他临时数据。
通用寄存器:A/B/C/D X 4个,SP,BP,SI,DI 4个
专用寄存器:SP,IP和FLAGS 3个16位寄存器。

问:既然DS存放的就是数据段的基地址,为何BX还要存放基地址?
答:DS是段寄存器 一般放的是数据段的段地址
至于BX 是一个灵活的寄存器 可以用它来做许多事情 当然也可以用来当指针 楼主所谓数据段的基地址是这个段的起始地址 要说他是基地址也没有错 但是bx里放的是某个字节或字的地址用[bx]来访问。DS放段地址,BX是通用寄存器.

疑问:SP到底是通用寄存器还是专用寄存器?
答:好像都可以,Intel为什么把SP设计成通用寄存器,这样我也觉得有些奇怪。
SP除了作栈顶指针外,你还可以用SP来完成加减乘除等算术和逻辑操作。
当然这样做的前提是这些操作过程中不会用到堆栈。
通常不会用到SP的通用功能。不过我倒是见到过,就是在一些加密用的壳里这样用,
来达到反跟踪效果

问:bx寄存器与ds段寄存器的区别. 为什么说,用BX做基地址的指令,默认采用ds段寄存器指向的数据段?

答:ds与bx配合,es与dx配合,cx作为计数器。这既是cpu硬件设计使然,也是软件设计的标准用法,就如围棋中的定式,你必须这么用。bx是提供偏移地址。

问:汇编语言中[bx],和(bx)的区别
(bx)是仅仅指bx寄存器的内容,书写好看明了;
[bx]是指偏移地址,指的是以寄存器BX的内容为偏移的路径大小,[bx]:也就是BX的内容为偏移地址,可以加上16d*ds,得到内存地址去内存中取数据。
[bx]是指偏移地址,默认段地址为ds
(bx)是描述语句(这样写是为了解释方便,指令当中可不能这样写)是指bx中的内容,

部分整理自百度知道

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值