采用什么寻址方式指令码长度最长

采用什么寻址方式指令码长度最长,第1张

采用顺序寻址方式指令码长度最长。

指令的寻址方式有以下两种。

一、顺序寻址方式由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令地顺序进行。也就是说,从存储器取出第1条指令,然后执行这条指令。接着从存储器取出第2条指令,再执行第二条指令。接着再取出第3条指令。

这种程序顺序执行的过程,称为指令的顺序寻址方式。为此,必须使用程序计数器(又称指令指针寄存器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。

二、跳跃寻址方式

当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。注意,程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。

采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。

有一段程序:内存地址 机器码 汇编指令

1000:0 b8 00 00 mov ax,0--B8H 00H 00H 共三字节

1000:3 e8 01 00 call s---也是三字节

1000:6 40 inc ax---仅有40H一个字节

1000:7 58 s:pop ax--也是一字节

-------------------------------

是不是看它的机器码,两位为一个字节?--是的。

怎么去算它的8位或是16位位移量?-- 一般不用人工计算,可由编译软件自动计算。

// get length of file

#include <iostream>     // std::cout

#include <fstream>      // std::ifstream

int main () {

 std::ifstream is ("testtxt", std::ifstream::binary);

 if (is) {

   // get length of file:

   isseekg (0, isend);

   int length = istellg();

   std::cout << "Binary length: " << length <<std::endl;

 }

 return 0;

}

from >

那就要看CPU怎么识别机器码了,

比如

MOV

AL,00

的机器码是

1011

0000

0000

0000b

(B000h)

MOV

的机器码是

1011

AL

的机器码是

0000

CPU读取一条指令,假如第一个字节是B0,那么

就是MOV

AL,后面紧跟着的一个字节就是要传进去的立即数(CPU判定这条指令长度2个字节)

再者

MOV

AL,[0000]

的机器码是

1010

0000

(后面16位0)

如果这个字节是A0,那么就是寄存器间接寻址的MOV

AL,后面紧跟着的16位就是地址偏移量

(CPU就判定这条指令长度3个字节)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

写好后用debug反汇编,u命令

1814:0000

33C0

XOR

AX,AX

1814:0002

A08000

MOV

AL,[0080]

其中的

33C0

A08000

等就是指令的机器码

就看出来占几个字节了

看你用哪种汇编语言了,NASM中是

message db 'hello, world'

msglen equ $-message

$:当前语句的地址

NASM中变量和标签是一样的

应该没有直接的指令吧。要是有的话,它需要两个 *** 作数,一个是字符串的首字符的地址,一个是末字符的地址,那么它不就是减法指令吗。

计算机取指令是按字节来取的,一条指令有几个字节就取几次。8086的指令根据需要可以是一个字节也可以是两个字节,最多六个字节,也就是采用可变长度的指令。

8086CPU内部的BIU部件里有个指令队列(六个字节),是用来暂时存放从内存取出来的指令,CPU要执行指令时再从指令队列中取出全部的机器码。

以上就是关于采用什么寻址方式指令码长度最长全部的内容,包括:采用什么寻址方式指令码长度最长、汇编语言每个指令的字节数是多少、C++用什么命令获取一个2进制的文件的长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9294956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存