汇编语言中,字节操作和字操作,到底什么时候要强调?!

作者&投稿:祁砌 (若有异议请与网页底部的电邮联系)
汇编语言中,关于字节与字之间的转换问题~

CBW指令将AL的最高有效位扩展至AH,即:如果AL的最高有效位是0,则AH = 00;AL的最高有效位为1,则AH = FFH。AL不变,如al中的值是0F0H,cbw后,ax中的值是0FFF0H,
而mov ax,word ptr buf,是把以buf为地址的两个字节,存入ax,如:
buf db 30H,50H,70H
mov ax,word ptr buf后,ax的值是5030H

CBW :字节转换为字执行的操作,也就是一个字节的数(8位),转换为两个字节的数(16位),这个指令只针对AL寄存器。AL(8位)的内容符号扩展到AH,形成AX(16位)中的字。即如果(AL)的最高有效位为0,则(AH)=0;如(AL)的最高有效位为1,则(AH)=0FFH。


这里的AL的内容符号,是说AL是有符号数,其最高位是符号位。例如:AL=0FH(最高位是0),则AH=00H,AX=000FH;AL=8FH(最高位是1),则AH=FFH,AX=FF8FH。

x86 CPU 可以执行 16 位数的指令,也可以执行 8 位数的指令。
指令中,如果不说明白位数是多少,CPU 就不干了。
--------
MOV CX, 200
INC AL
这种指令,使用了寄存器,这就非常清楚的说明了位数。
--------
mov ds:[0],1 ,这种指令,使用了存储器。
而对于存储器,可以进行两个字节、也可以进行一个字节的传送。
这条指令,究竟是多少位的?
这就让 CPU 糊涂了。

必须写成:
mov word ptr ds:[0],1,加上了《word ptr》,就是《字属性》,就是16位数的传送。

俩问题是一个意思,不能确定内存单元长度时,就必须用X ptr说明。

对于8086来说,指令中有寄存器或pop、push指令。
1、指令中有寄存器,就可确定内存单元长度或操作数尺寸,如:
mov ax,1
mov bx,ds:[0]等,操作数为2字节,字单元(16位)。
mov al,1
mov bh,ds:[0]等,操作数为1字节,字节单元(8位)。

2、指令中有pop、push,操作数为2字节,字单元(16位)。
以上两种情况都可确定内存单元长度或操作数尺寸,不需用X ptr说明。

X ptr是说明内存单元长度或操作数尺寸的。凡是不能确定内存单元长度或操作数尺寸的,就必须用X ptr说明。


byte ptr是什么意思(inc在编译器中是什么意思)
INC指令将影响SF,AF,ZF,PF,OF标志位,但是不影响CF标志位。INC指令的操作数的类型可以是通用寄存器或存储单元,但不可以是段寄存器。字或字节操作均可。对于存储单元,需要用BYTEPTR或者WORDPTR说明是字节还是字操作。汇编语言CMP IBUF[BX],'-'是什么意思 这是比较指令。两者相减,产生标志位。复习一...

汇编语言中DB指令的意义
DB作为汇编语言中的伪操作命令,它用来定义操作数占用的字节数。在这里B是byte的缩写,即字节,所以,该伪操作所定义的每个操作数占有1个字节(8位)。如:MESSAGE DB 'HELLO' 此时,字符串“HELLO”中每个字符会占用1个字节,51单片机中,用于定义字节的内容。DB 指令以表达式的值的字节形式初始化代码...

汇编MUL是什么意思?
·MUL 汇编语言无符号数乘法指令 格式:MUL SRC 执行的操作:字节操作数:(AX)←(AL)*(SRC)字操作数:(DX,AX)←(AX)*(SRC)双字操作数:(EDX,EAX)←(EAX)*(SRC)MUL:80C51单片机系统的乘法指令,只有一条指令:MUL AB 乘法指令的功能是将A和B中两个无符号8位二进制数相乘,所得的16位积的...

汇编中什么叫字节类型、字类型、双字数据(占两个字节的数据吗)?为什么...
汇编语言 是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的...

"字节"是什么单位?
字节(Byte \/bait\/ n. [C])是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位,也表示一些计算机编程语言中的数据类型和语言字符。字节是指一小组相邻的二进制数码。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。...

byte是什么意思
3. Byte的应用场景:在计算机编程中,程序员经常需要处理Byte数据。无论是处理文件、网络通信还是图像处理,都需要对Byte进行操作。此外,许多编程语言和工具都提供了处理Byte数据的方法,如Java中的字节流操作或Python中的字节串处理等。在硬件层面,了解Byte的工作原理对于理解和优化计算机系统的性能也是非常...

什么是字符、字、字节、字节?
3、字节(Byte \/bait\/ n. [C]):是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位, 也表示一些计算机编程语言中的数据类型和语言字符。字节是指一小组相邻的二进制数码。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。8个位构成一个字节...

1kb等于多少字节?
1GB = 1,024MB 1MB = 1,024KB 1KB = 1,024字节 因此,1KB等于1,024字节。字节是计算机数据存储的基本单元,通常由8位二进制数字组成。在信息处理和存储中,字节作为一个整体进行操作,是构成数据字段的基本组成部分。在微型计算机系统中,通常使用字节来衡量存储器的容量。例如,在C++等编程语言中...

位、字、字节到底是怎么换算?
6. 计算机中的寄存器、数据处理、内存传输等操作通常以字长为单位。7. 地址寄存器在内存中用于定位存储位置,它们的地址通常也是以字长为单位。8. 历史上,计算机曾使用过多种字长,如8、9、12、18、24、36、39、40、48、60位等,而现代计算机普遍采用16、32、64位。9. 在编程语言中,数据类型的...

汇编中可以为RAM中的某个字节空间定义一个变量名,然后通过变量名来使...
在汇编语言中,您可以为RAM中的某个字节空间定义一个变量名,然后通过这个变量名来使用这个字节空间。使用KEIL编写的单片机汇编语言,您可以使用"sbit"伪指令在RAM中定义变量。伪指令"DB"用于在RAM中定义变量。以下是一个汇编语言的示例,可以在KEIL中编译通过。```assembly ;--- ; 变量定义 ; sbit ...

霞山区19742614186: 汇编语言的指令中什么时候必须指明字还是字节?为什么要指明字和字节?要不指明会怎样?
中叔青申优: 比如说地址1000~1003中存储的数据为: 2A 3A 4A 5A 分别执行: 1. mov eax, byte ptr [1000] 2. mov eax, dword ptr [1000]和 3. mov eax, [1000] 时,EAX中的内容是不同的. 其结果分别为(假设执行前EAX=0): 1. EAX=2A 00 00 00 2. EAX=2A...

霞山区19742614186: 汇编语言中,关于字节与字之间的转换问题 -
中叔青申优: CBW指令将AL的最高有效位扩展至AH,即:如果AL的最高有效位是0,则AH = 00;AL的最高有效位为1,则AH = FFH.AL不变,如al中的值是0F0H,cbw后,ax中的值是0FFF0H, 而mov ax,word ptr buf,是把以buf为地址的两个字节,存入ax,如: buf db 30H,50H,70H mov ax,word ptr buf后,ax的值是5030H

霞山区19742614186: 汇编中的 字操作数 是指什么 -
中叔青申优: 汇编中的 字操作数 是指汇编指令中需要加工或操作的数据或对象. 汇编指令的格式:由2部分组成 操作码 操作数 例如: 汇编指令 ADD A, #67 ;其中ADD是操作码 表示指令的功能为加法指令A, #67 为2个操作数 即参与加法运算的数据 如:(A) + 67 结果保存在累加器A 呵呵 满意 就选满意回答啊

霞山区19742614186: 汇编语言中 字,字节,存储单元,三者的关系? -
中叔青申优: 字、字节、存储单元 这本身并不是汇编语言中的概念,而是CPU结构中的东西.但由于汇编语言与硬件直接相关,所以往往讲汇编语言的时候,会提到这三个词语.存储器是RAM或ROM,它的一个存储单元典型的可以是4位、8位、16位或32位,而一个字长是指CPU一次处理数据的长度,具体看CPU的处理能力而定,但一个字节是固定的8位.

霞山区19742614186: 字节操作时什么?如果要说是对字节进行操作,跟随处理器变动就免了.要具体的
中叔青申优: 用英文或许你就明白了.字=word,字节=byte,一个字2字节

霞山区19742614186: 汇编中关于字符串操作的指令 -
中叔青申优: 例子就没有了 以下希望能有所帮助1 串传送指令:DF决定DI增减当DF=0时(由CLD指令设置),按增量修改;若DF=1(由STD指令设置),按减量修改.格式: MOVS 目的串,源串 MOVSB ;字节操作 MOVSW ;字操作 功能: [ES:DI] ← ...

霞山区19742614186: 汇编程序中,节类型和字节类型的区别... -
中叔青申优: 字就是word,字节是byte,1word=2byte. 一个字节类型占用一个字节,这句话好废话啊.字节就是字节,还什么占用不占用的呀. 内存里以字节为基本单位,并由多个字节组成字、双字等等类型. 至于你说的数字在内存里存放的问题,这个在汇编里就由你自己决定咯,你可以将数字1放在一个字节里(变量名 db 1),也可以将1放在一个字里(变量名 dw 1),还可以放在双字里(变量名 dd 1). 总的来说,在汇编里,没有高级语言里的类概念,所有的都是内存地址和内存地址里放的二进制. 转换一下你的思考方式,你会豁然开朗的.

霞山区19742614186: 是位操作还是字节操作 -
中叔青申优: 在 C 语言的编程过程中,例如涉及到字符、或者字符串操作的时候,都是字节操作;但是如果涉及到硬件编程的时候,需要检测硬件设备的某一位的值是 0,还是 1 的时候, 就应该使用位操作了.

霞山区19742614186: 汇编中INC是什么意思 -
中叔青申优: 加1指令 INC 指令功能 目标操作数+1 INC指令只有1个操作数,它将指定的操作数的内容加1,再将结果送回到该操作数.INC指令将影响SF,AF,ZF,PF,OF标志位,但是不影响CF标志位. INC指令的操作数的类型可以是通用寄存器或存储单元,但不可以是段寄存器.字或字节操作均可. 对于存储单元,需要用BYTE PTR或者WORD PTR说明是字节还是字操作.

霞山区19742614186: 如何通俗解释汇编语言中的movs -
中叔青申优: 需要 用byte ptr 或 word ptr 告诉 编译器 是传字节 还是 字.或者将 movs 改为 movsb、movsw. ;这是自动生成的代码模板stacks segment stack ;堆栈段dw 128 dup(?) ;注意这里只有128个字节stacks ends datas segment ;数据段 ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网