| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 636 人关注过本帖
标题:请问 寄存器bx, si, di在编程中一般有哪些区别啊
只看楼主 加入收藏
一只小蛤蟆
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-9-27
结帖率:0
收藏
 问题点数:0 回复次数:1 
请问 寄存器bx, si, di在编程中一般有哪些区别啊
请问 寄存器bx, si, di功能好像一样,在编程中一般有哪些区别啊
搜索更多相关主题的帖子: 区别 编程 寄存器 
2023-09-28 09:23
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:340
专家分:2482
注 册:2016-5-15
收藏
得分:0 
x86 16bit汇编,bx,si,di都可以作为基底定址,而放在[]里,比如[bx],[bx+1234],[si+bx],[bx+di+1234]....
其分别在于某些指令的默认寄传器.比如.
xlatb ;al=ds:[bx+al]
movsb,movsw,movsd ; DS:[SI] ->(覆制资料到目的,若前有rep,则每次di+1(或2,4),si+1(或2,4),cx- 1,直到cx=0)->ES:[DI]
scasb,scasw,scasd ; 找 ES:[DI]里的al,ax,或eax值,若前有rep,则每次di+1(或2,4),cx-1,直到cx=0
cmpsb,cmpsw,cmpsd ; 比较DS:[SI]与ES:[DI],若前有rep,则每次di+1(或2,4),si+1(或2,4),cx-1 ,直到cx=0
lodsb,lodsw,lodsd ; al(ax,eax)=ds:[si]
stosb,stosw,stosd ; es:[di]=al(ax,eax),若前有rep,则每次di+1(或2,4),cx-1,直到cx=0
注:di,si的加或减,由方向标志(direct flag)决定,方向标志=0(cld),则加,方向标志=1(std),则减


bx只能和si或di配合成一个地址,如:[bx+si],[bx+di]
bp只能和si或di配合成一个地址,如:[bp+si],[bp+di]
bx和bp,或si和di不能组合, [bx+bp],[si+di]都是错的.
2023-10-14 08:26
快速回复:请问 寄存器bx, si, di在编程中一般有哪些区别啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014035 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved