汇编语言寄存器存储器问题
寄存器是cpu内部的通用寄存器和段寄存器的总称,如果在寻址的时候用方括号就代表着间接寻址,也就是在内存中找数据。至于存储器的概念可以自己看看书,呵呵。
看图很简单啊。bx值为30,与6相加等于36,这就是偏移。与ds相加就是实际地址20036了。这个地址存放的值是已知的50,它与ax作加法。ax的值为40,结果自然就是90了
通用寄存器8个:AX BX CX DX SP BP DI SI加方括号就是存储器,存储器之间不能传递数据
REG寄存器
MEM储存器
SREG状态寄存器
立即数有宽度,但要看怎么用:mov ax,12h就是16位的,mov al,12h就是8位的,但不能mov al,0012h
寄存器有通用寄存器,段寄存器,标志寄存器
其中通用寄存器:
EAX:累加寄存器,是32位的 可以取低16位单独使用,叫AX,其中AX,又可以分成一半一半 8高位的叫AH 底8位的叫AL
其他(E)BX,(E)CX,(E)DX用法一样(所以你看到BL就知道它是8位的寄存器,看到DX就知道它是16位的寄存器)
而段寄存器有 SS CS FS GS
汇编里讲到段寄存器时 一般根据功能判断是什么寄存器
至于加上括号 不是说不是寄存器,而是寄存器寻址的一种表示方法:
例如:MOV AX,[DS][DI]
是把DS+DI值对应的地址的内容给AX
立即数是有宽度的,例如
MOV AX,97H 就会报错 因为AX是16位寄存器 而97H则是8位立即数(这时可以用CDW进行类型转换,把97H变成0097H)
请说明JMP DI和JMP [DI]指令的区别.
DI就是指放进它里面的东西,如一个内存单元的偏移地址0001H;[DI]表示存储单元里的内容,如偏移地址为0001H内存单元里面放着数据12H,那么[DI]就是指12H.
1.用寄存器BX和SI的基址变址寻址方式,把存储器中的一个字节与AL寄存器的内容相加,并把结果送回存储器中.
ADD AL,[BX][SI]
2.用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器的一个字和(CX)相加,并把结果送回存储器中.
ADD [BX+B2H],CX
3.用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回该存储单元中.
题目打错了吧?0524H应该是偏移地址吧。这样的话,代码如下:
MOV AX,2A59H
ADD [0524H],AX
请参考
寄存器是一个总称,它分为通用寄存器和段寄存器等等,当然还有其它的寄存器如CR0等,只是在win32环境完全没必要了解,因为没有特权对它们进行操作,只有更高的特权级如操作系统内核才能对它们进行操作。
如果你是新手可能你还不知道,汇编语言是有很多个种类的有masm,nasm,tasm等等,每一种汇编的语法都有分别,我学的是nasm加方括号如mov [bx], 0,是间接寻址,即取bx的内容作为内存地址寻址。
寄存器是CPU内部的通用寄存器和段寄存器的总称,如果在寻址的时候用方括号就代表着间接寻址,也就是在内存中找数据。。你可以去饭客网络详细的学习下汇编知识
寄存器与存储器有什么区别?
功能的不同:存储器功能:存放指令和数据,并能由中央处理器(CPU)直接随机存取。寄存器功能:可将寄存器内的数据执行算术及逻辑运算;存于寄存器内的地址可用来指向内存的某个位置,即寻址;可以用来读写数据到电脑的周边设备。使用时速度的不同:寄存器的速度比主存储器的速度要快很多,由于寄存器的容量...
汇编语言寄存器都叫什么?
4个数据寄存器(EAX、EBX、ECX、EDX)。 2个变址和指针寄存器(ESI和EDI);2个指针寄存器(ESP和EBP)。 6个段寄存器(ES、CS、SS、DS、FS、GS)。 1个指令指针寄存器(EIP);1个标志寄存器(EFlags)。 2、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
寄存器和存储器的区别在哪里
寄存器和存储器的区别有以下几点:1、存储器功能:存放指令和数据,并能由中央处理器(CPU)直接随机存取。2、寄存器功能:可将寄存器内的数据执行算术及逻辑运算;存于寄存器内的地址可用来指向内存的某个位置,即寻址;可以用来读写数据到电脑的周边设备。3、寄存器的速度比主存储器的速度要快很多,由于...
存储器和寄存器有什么区别?
寄存器和存储器的区别有以下几点:1、存储器功能:存放指令和数据,并能由中央处理器(CPU)直接随机存取。2、寄存器功能:可将寄存器内的数据执行算术及逻辑运算;存于寄存器内的地址可用来指向内存的某个位置,即寻址;可以用来读写数据到电脑的周边设备。3、寄存器的速度比主存储器的速度要快很多,由于...
寄存器和存储器有什么区别?
寄存器和存储器的区别有以下几点:1、存储器功能:存放指令和数据,并能由中央处理器(CPU)直接随机存取。2、寄存器功能:可将寄存器内的数据执行算术及逻辑运算;存于寄存器内的地址可用来指向内存的某个位置,即寻址;可以用来读写数据到电脑的周边设备。3、寄存器的速度比主存储器的速度要快很多,由于...
指令寄存器和程序存储器有什么区别
先明白定义再说区别和原理:1、程序存储器(program storage)在计算机的主存储器中专门用来存放程序、子程序的一个区域。2、指令寄存器(IR ):用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。指令划分为操作码和地址码字段,由二进制数字组成...
寄存器和存储器的区别是什么?
寄存器和存储器的区别有以下几点:1、存储器功能:存放指令和数据,并能由中央处理器(CPU)直接随机存取。2、寄存器功能:可将寄存器内的数据执行算术及逻辑运算;存于寄存器内的地址可用来指向内存的某个位置,即寻址;可以用来读写数据到电脑的周边设备。3、寄存器的速度比主存储器的速度要快很多,由于...
存储器和寄存器的区别是什么?
寄存器和存储器的区别是概念不同。寄存器(Register)是位于中央处理器(CPU)内部的一小块高速存储区域。它们用于存储和处理指令和数据。寄存器的容量通常非常有限,但它们的访问速度非常快。寄存器直接与CPU相关联,用于存储和执行指令,以及进行临时数据存储和运算。寄存器的数量和功能因CPU的设计而异,例如...
寄存器与存储器有什么区别?
寄存器和存储器的区别是概念不同。寄存器(Register)是位于中央处理器(CPU)内部的一小块高速存储区域。它们用于存储和处理指令和数据。寄存器的容量通常非常有限,但它们的访问速度非常快。寄存器直接与CPU相关联,用于存储和执行指令,以及进行临时数据存储和运算。寄存器的数量和功能因CPU的设计而异,例如...
寄存器和存储器的区别是什么?
寄存器和存储器的区别是概念不同。寄存器(Register)是位于中央处理器(CPU)内部的一小块高速存储区域。它们用于存储和处理指令和数据。寄存器的容量通常非常有限,但它们的访问速度非常快。寄存器直接与CPU相关联,用于存储和执行指令,以及进行临时数据存储和运算。寄存器的数量和功能因CPU的设计而异,例如...
劳荷半夏: 首先内存和寄存器都是可以存放数据的 而寄存器是就那么几个,不可能把所有数据都放在寄存器里 寄存器里面是有值的,如果直接丢给CPU运算,就是寄存器寻址.如果把寄存器里面的数当作地址编号,跟据编号在内存里找到另一个数,就是存储器寻址.CS,DS,ES,SS是CPU的寄存器 MOV AX,DS 都是寄存器寻址方式(它们本身都有值).MOV AX,[2000] 这个指令有两种寻址方式 AX表式寄存器寻址方式,[2000]表示直接寻址方式(存储器寻址方式的一种) 反正只要带上中括号的全是存储器寻址方式,而寄存器寻址就只有一种(例如:AX)
静乐县15789795123: 请教一个51单片机的寄存器的问题 - ?
劳荷半夏: 51单片机中的存储空间,从功能上来分可以分为程序存储器、内部数据存储器、特殊功能寄存器、位地址空间、外部数据存储器5大部分(还有其他分类方法,具体看教科书). 不同的存储空间有不同的功能,也有不同的指令与之对应.如程序...
静乐县15789795123: 汇编语言中,存储器和寄存器的区别 - ?
劳荷半夏: 寄存器B是特殊功能寄存器,地址是F0H Rn是工作寄存器.地址是00H~1FH
静乐县15789795123: 汇编语言中的寄存器是否会不够用,因为高级语言的变量数量不受限制 - ?
劳荷半夏: 先分清寄存器的作用.寄存器可以当做数据存储器用,但更多的是为某一专用功能而设计.先说寄存器的专用功能,它们被用于保留乘除法的结果,用于计数器,用于堆栈......,这时,不存在被当做变量的说法,所以也不用考虑够不够用.然后,你可能需要用寄存器存储变量,但是计算机还有内存啊,在存储变量方面,寄存器和内存是一样的( 不考虑速度).所以如果寄存器"不够用",你就存到内存啊.但更多的时候你是把寄存器当做传输数据的中间件,这时你的目的是传输数据,你在意的是把数据传到目的地,目的达到了,"中间人"这个大好人,就不用你管了.这些问题你不用考虑,如果"不够用",事情就非常严重了,Intel早就销声匿迹了.
静乐县15789795123: 新手汇编里关于4个段寄存器的问题 - ?
劳荷半夏: 嘿嘿 还是俺来帮你解答吧1 cs是存放程序段首地址的寄存器 该段地址从CS*16开始 有64K空间可以存放用户的程序代码 比如 MOV AX,267 这条指令 就是存在从CS*16开始的代码段中的.267是指令中的操作数 和指令是一体的 都存在代码段中...
静乐县15789795123: 汇编存储器与寄存器?
劳荷半夏: 你说的是DEBUG的D命令吧?那个D命令在默认的情况下只显示128个内存单元,不是存储器只有128个内存单元,D命令显示的内存只是系统内存的一小部分 关于那个显示方式XXXX:XXXX表示的是每一行的第一个内存单元的地址 那个D命令显示出来的00占一个字节
静乐县15789795123: 汇编语言中SP寄存器为什么不能存放地址? - ?
劳荷半夏: 指针寄存器32位CPU有2个32位通用寄存器EBP和ESP.其低16位对应先前CPU中的SBP和SP,对低16位数据的存取,不影响高16位的数据.寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便.指针寄存器不可分割成8位寄存器.作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果.它们主要用于访问堆栈内的存储单元,并且规定: BP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶.
静乐县15789795123: 汇编中的状态标志寄存器问题 - ?
劳荷半夏: 溢出标志OF=1的条件是最高位和次高位的进位位异或结果为1则发生溢出、两个正数或是两个负数间操作不会发生溢出,在这里最高位有进位所以为1次高位也有进位所以也为1它们异或为0所以不发生溢出……你要明白这里的溢出不是说数据超出范围就发生溢出
静乐县15789795123: 汇编语言的基础问题??
劳荷半夏: 一、寄存器存在于CPU中,速度很快,数量有限; 存储器就是内存,速度相对寄存器稍慢; 计算机做运算时,先将数据读入寄存器再进行运算.二、寄存器中可存立即数,可存地址, 三、为什么要叫寄存器?寄存器里的数据一般会频繁更新和运算,且只是暂存. 四、表示指令中操作数所在的方法称为寻址方式.可以这样理解,立即寻址是不需要进行计算的,直接去立即数表示的内存地址存储就可以. 变址,是指地址需要进行计算得出的,比如要根据一个相对不变的基址再加上偏移量.
静乐县15789795123: 汇编 存储器 问题 - ?
劳荷半夏: 1: 需要(16K/1K)*(8/1)=128片 其中由1024*1bit可以知道2^10=1024所以有10位地址线参与片内寻址.知道116/1=16 所以需要4位组合成片选信号. 2: 需要(4*1024)/(512*4)=2片,每个芯片需要9位寻址线,整个存储器系统最少需要9条,这样可以直接将两片芯片进行字扩展,最多需要10条,因为需要一位进行片选.其余当然就是9条进行片内寻址了.