首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

汇编初学者寻求帮助-关于汇编中mov的最基本有关问题-有关问题很基础,望各位大神给予帮助!

2012-02-24 
汇编菜鸟寻求帮助-----关于汇编中mov的最基本问题----问题很基础,望各位大神给予帮助!!在8086汇编语言中,

汇编菜鸟寻求帮助-----关于汇编中mov的最基本问题----问题很基础,望各位大神给予帮助!!
在8086汇编语言中,代码段总是会不停的遇到mov指令,在这里我不是想问mov的用法,而是相关于其后数据的一些问题



如: MOV AX , DATA 
  MOV DS , AX
  MOV CX , 50
  MOV AX , 0
  MOV BX , 1



我个人每次在分配储存空间时,都不是很确定要把数据储存在哪个寄存器中,完全是在乱写,行不通了就乱改,我想请教各位大神,寄存器的选择有什么规则吗,例如 你怎么就知道 应该把DATA 传到AX 中哪, 第二个MOV 指令中 AX 只能传到DX中吗,CX ,BX可以吗 有什么规律吗??


问题很基础 , 希望各位大神不要见笑,多多指教,不胜感激!!

[解决办法]
MOV AX , DATA
MOV DS , AX

之所以要將DATA先存在AX中,再赋值给DS;是因为DS,SS,ES,FS,GS,CS是段寄存器,只能通过AX,CX等寄存器来赋值;至于你用哪个寄存器是没有规定的。在写程序的时候,寄存器就只有AX,BX,CX等几个,如果其中用于保存了数据供以后使用的话,就不可以顺便改动;如果没有就可以使用了
[解决办法]
可以放入其他寄存器,这个有些是个人的选择。

不过在某些情况下,必须要用某几中reg的组合。
[解决办法]
糊里糊涂的人不适合做汇编。稍微一个小错,就需要调试半天。
8086的每个寄存器都有不同设计。
AX是运算寄存器,有些运算只能跟AX做。
BX也有一些运算功能,有时还跟BP联合做一些栈操作。
一些循环操作使用CX做下标。
DX没有什么特殊功能。
SI、DI在一片内存的连续复制时做源和目的的下标。
如果只是MOV,他们可以随便互相MOV。

你的错误主要发生在把这些寄存器当高级语言的变量用了。变量可以随便申请,寄存器就那么几个,所以很容易乱。如果你非要编汇编程序,那就别怕麻烦,把寄存器就当缓存,5行以内,存回内存(每个变量分配一个内存),再要用,就从内存里面再取出来,程序就不会那么多错了。

热点排行