ZKX's LAB

汇编从寄存器往内存写数 在写汇编程序时,什么时候用哪个寄存器我搞不清楚啊

2020-07-22知识7

汇编MOV指令:源操作数为存储器,目的操作数为段寄存器————行吗?例如: 可以抄的。对段寄存器的操作,从网上抄的如下:段寄存器的操作有一些限制百 –-段寄存器属专用寄存器,对他们的操作能力有限不允许立即数传送给段寄度存器 MOV DS,100H;非法指令:立即数不能传送段寄存器不允许直接改变CS值 MOV CS,[SI];不允许使用问的指令?不允许段寄存器之答间的直接数据传送 MOV DS,ES;非法指令:不允许段寄存器间传送在写汇编程序时,什么时候用哪个寄存器我搞不清楚啊 很简单:如果没有限制和冲突,随便用都行。如果不同的寄存器有些好用,有些不太好用,那当然选好用的。如果有限制,在限制允许的范围内选用。如果有冲突,避开冲突。不知道你说的是哪种汇编,下面以8086汇编为例简单说说:比如,做16位加法,你AX,BX,CX,DX,SI,DI,等等,随便用哪个都可以。通常首选是通用寄存器。段寄存器的寻址运用有很多限制,不如通用寄存器灵活,所以一般不用。(另一个原因是程序运行中段寄存器不能随便乱改)如果有限制,比如你要用来存放有效地址访问内存,那就只能在4个间址寄存器中选一个,比如BX或者SI。有些指令规定必须使用某个寄存器,那就只能用那一个。如果有冲突,比如你在程序中要用CX当计数器控制循环,那么程序循环体内部就要注意避开它,不能随便使用CX,不能乱改CX的内容。正确地使用寄存器,需要具备这样的基本技能:熟练全面地掌握各种指令,了解它们对寄存器的使用限制。需要全面了解你的程序,了解它的功能算法对寄存器的使用需求。平时多读一些别人的程序,了解一些常用习惯和规范。汇编语言中定义的变量是存放在哪的?内存还是寄存器? 内存汇编语言,关于内存数据和寄存器的值之间的简单计算? 设置ds的值啊。mov ax,1000mov ds,ax下面的表格里,已经告诉你了,看书不细汇编语言中的寄存器是否会不够用,因为高级语言的变量数量不受限制 先分清寄存器的作用.寄存器可以当做数据存储器用,但更多的是为某一专用功能而设计.先说寄存器的专用功能,它们被用于保留乘除法的结果,用于计数器,用于堆栈.,这时,不存在被当做变量的说法,所以也不用考虑够不够用.然后,你可能需要用寄存器存储变量,但是计算机还有内存啊,在存储变量方面,寄存器和内存是一样的(不考虑速度).所以如果寄存器\"不够用\",你就存到内存啊.但更多的时候你是把寄存器当做传输数据的中间件,这时你的目的是传输数据,你在意的是把数据传到目的地,目的达到了,\"中间人\"这个大好人,就不用你管了.这些问题你不用考虑,如果\"不够用\",事情就非常严重了,Intel早就销声匿迹了.

#操作数#汇编指令#段寄存器#数据寄存器#汇编语言

随机阅读

qrcode
访问手机版