精华内容
下载资源
问答
  • 第三章 8086/8088的寻址方式和指令系统 练习题 一.单项选择题 1.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址为( )。 A.5000H B.5008H C.23008H D.32008H 2.设DS=1000H,ES=2000H,BX=...
  • 寻址方式 这里统一说四种: 立即数寻址 寄存器寻址 直接寻址 寄存器间接寻址 判断技巧: 只要是数字(地址)或者等效符指定(类似 a equ 0h)都是立即数寻址 只要是只有寄存器,都是寄存器寻址 如果是寄存器外面加...

    寄存器

    在这里插入图片描述

    • eax:32位长==4字节(0~31)
    • ax:16位长==2字节(0~15)
    • al:8位长==1字节 (0~7)
    • ah:8位长==1字节(8~15)

    寄存器符号汇总

    在这里插入图片描述

    寻址方式

    这里统一说四种:

    • 立即数寻址
    • 寄存器寻址
    • 直接寻址
    • 寄存器间接寻址

    判断技巧
    只要是数字(地址)或者等效符指定(类似 a equ 0h)都是立即数寻址
    只要是只有寄存器,都是寄存器寻址
    如果是寄存器外面加了‘[ ]’,则就是寄存器间接寻址
    如果是变量名,那就是直接寻址

    指令操作合法性

    在这里插入图片描述
    以mov指令,为例子(其余大概都相同),箭头表示可寻址到。
    技巧:

    1. 首先判断转换位数(位数不同,直接pass)
    2. 之后判断目标

    以下都默认位数正确
    只要目标操作数是立即数,都不合法
    只要源操作数是内存(寄存器间接寻址是访问内存,同时每条指令指令只能访问一次内存,即:如果一条语句中,源操作数与目的操作数都是访问内存,则不合法),都不合法
    只要源操作数是寄存器(不包括自反),都不合法

    例题:
    在这里插入图片描述

    外设操作

    汇编语言中,CPU对外设的操作通过专门的端口读写指令来完成;
      读端口用IN指令,写端口用OUT指令。
      例子如下:

       IN AL,21H;表示从21H端口读取一字节数据到AL
      IN AX,21H;表示从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AH
      MOV DX,379H
      IN AL,DX ;从端口379H读取1字节到AL
      OUT 21H,AL;将AL的值写入21H端口
      OUT 21H,AX;将AX的值写入端口地址21H开始的连续两个字节。(port[21H]=AL,port[22h]=AH)
      MOV DX,378H
      OUT DX,AX ;将AH和AL分别写入端口379H和378H
    
    展开全文
  • 一、判断解释程序运行 (建议先看完第二大点–画存储结构) 给出前提代码: 数据段 DATA SEGMENT S DB 1,2,3,4 W DW 1921H,4567H S2 DB ‘ABCD’ S3 DW ‘12’,’34’ DATA ENDS 代码段 code segment start: MOV S+...

    基本是想到什么说什么,归纳自己遇到的问题

    但总的 方向依旧如标题。
    一、判断解释程序运行
    (建议先看完第二大点–画存储结构)
    给出前提代码:
    数据段

    DATA SEGMENT
    S  DB  1,2,3,4
    W  DW  1921H,4567H
    S2 DB  ‘ABCD’
    S3 DW   ‘12’,’34’
    DATA ENDS
    

    代码段

    code segment
    start:
    MOV S+1, 45H
    MOV AX, WORD PTR S
    MOV W, AX
    MOV BX, 2
    MOV CX, W[BX]
    MOV S3+2, CX
    MOV DL, byte ptr W[BX+1]
    MOV S2, DL
    code ends
    

    解释程序运行过程

    MOV S+1, 45H
    (s+1变为45)
    MOV AX, WORD PTR S
    (AX变为S无偏移的变量(字类型),即4501)字类型
    MOV W, AX
    (W无偏移变为4501)
    MOV BX, 2
    (BX变为0002)
    MOV CX, W[BX]
    (CX变W[2],即4567)
    MOV S3+2, CX
    (S3[2]变为CX,即4567)
    MOV DL, byte ptr W[BX+1]
    (DL变W[3],即45)
    MOV S2, DL
    (S2无偏移变DL,即45)
    

    结果图,被改变的数据均被改色:
    在这里插入图片描述
    二、画存储结构
    首先是对存储的一些理解,
    1.一定要注意操作数之间的类型,字变量一定要对应字变量,
    2.AX等是大小是字,分高低8位字节
    3.存储遵循“高对高,低对低”

    字节变量DW “AB”,遵循第三点,存储结构
    在这里插入图片描述
    反之字变量DB “AB”
    在这里插入图片描述

    如果要根据图得到偏移地址和变量值,则又不一样
    注意:
    1.偏移地址是从0000开始,
    2.取变量值时,一定要注意该数据段的数据类型,要严格按变量类型取值

    如此图,上往下看
    在这里插入图片描述

    是DB变量时就是取41H,
    DW则就是4241H,

    三、寻址方式
    在这里插入图片描述

    展开全文
  • 依据指令中给出的操作数的不同格式,ARM 指令系统具有 8 种常见的寻址方式。我们这次就来讨论一下立即寻址。 在立即寻址,操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也称为立即数。例子...

    依据指令中给出的操作数的不同格式,ARM 指令系统具有 8 种常见的寻址方式。我们这次就来讨论一下立即寻址。

    立即寻址的特点

    在立即寻址,操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也称为立即数。例子如下:

    ADD R0, R1, #5      ;R0=R1+5
    MOV R0, #0x55       ;R0=0x55 
    

    在这两个例子中,操作数 5 和 0x55 就是立即数。

    注意:立即数在指令中要以 “#”为前缀,后面跟实际数值。

    立即数形式

    我们看到上面两个立即数一个是十进制一个是十六进制,那么这个立即数有哪些形式呢?

    #后的立即数形式:

    • 0x 或 & 表示十六进制数
    • 0b 表示二进制数
    • 0d 或缺省表示十进制数

    合法立即数

    现在又有一个问题,我们怎么判断这个立即数是不是合法的,也就是计算机能够准确表示出来的呢?

    立即寻址机器指令格式

    这里首先涉及到数据编码的知识。我们知道我们写出的是汇编指令,而汇编指令不是计算机能够理解的,计算机所能理解的只是 0 1 这两种数字。所以,我们写出的汇编指令还要经过译码器译码成机器指令才能被计算机所理解。

    在 ARM 中,机器指令的格式大致有如下这么多种,还有一些更具体的这里不提(图片来自 ARM Architecture reference Manual):

    在这里插入图片描述

    我们此次讨论的立即数寻址的指令格式应该是:
    在这里插入图片描述
    在这里插入图片描述

    指令解析

    我们可以从图片中看出:一条指令的后 12 位(bit 11~0),是指令中立即数占用的位数。其中这 12 位又分为两部分:前 7~0 位是数值部分;后 11~8 位是前 7~0 位要进行移位操作的移位数。

    我们注意到其中 immed_8 有 8 位,也就是我们的立即数部分占 8 位,因此有如下结论:

    • 如果一个立即数小于 0xFF(255)那么直接用前 7~0 位表示即可,此时不用移位,11~8 位的 Rotate_imm 等于 0。
    • 如果前八位 immed_8 的数值大于 255,那么就看这个数是否能有 immed_8 中的某个数移位 2*Rotate_imm 位形成的。如果能,那么就是合法立即数;否则非法。

    判断方法

    一个 32 位数用 12 位编码表示,符合以下规则才是合法立即数。

    立即数 = immed_8 循环右移 (2 * Rotate_imm)

    解读:如果存在一个 Rotate_imm 能够让该立即数由 immed_8 循环右移 2*Rotate_imm 位(偶数位)表示,那么这个立即数就是合法的。

    PS. 这个为什么是 32 位我姑且不知道,抄 PPT 的。12 位编码就是 指令解析 这一小节里面说的那 12 位。

    例子 #0x0000f200

    我们来举个例子看看

    汇编指令:mov R0, #0x0000f200

    经过译码器转化为汇编后的机器指令如下:

    机器指令:0xe3a00cf2 ,其中 0xcf2 就是我们的立即数。

    下面我们讨论译码器是如何计算出这个 cf2 的:

    我们先来解剖一下转换后的 cf2。其中的 c 就是 Rotate_imm 部分,而 f2 则是 Immed_8 部分。

    译码器看到 #0x0000f200 也就是二进制的 0000 | 0000 | 0000 | 0000 | 1111 | 0010 | 0000 | 0000 |。然后计算出将其中的 1111 | 0010 部分循环右移 24 位刚好就是那个二进制。(看下面的图会更清楚)

    即 0x0000f200=0xf2 循环右移 (2×0x0c)

    因此我们可以得出此时的 Rotate_imm 的值就是 12,十六进制就是 c; Immed_8 的值则是 1111 | 0010 即 f2。

    到此为止 cf2 的计算已经完毕。

    PS. 这里的 | 并没有实际的含义,我这样做只是为了看得清楚。

    在这里插入图片描述

    最后有一个译码器寻找的伪代码,感兴趣的可以看看。

    例子 0x234

    0x234 是不是一个合法的立即数?

    我们把 0x234 表示成 0000 | 0000 | 0000 | 0000 | 0000 | 0010 | 0011 | 0100 ,发现将其中的 1000 | 1101 部分循环右移 30 位可以和这个二进制数相同。因此 Rotate_imm 的值是 15,而 Immed_8 的值是 1000 | 1101 即 8D。

    例子 0x132

    0x132 是不是一个合法的立即数?

    我们把 0x132 表示成 0000 | 0000 | 0000 | 0000 | 0000 | 0001 | 0011 | 0010,发现没有任何部分循环右移偶数次可以成为该数本身,因此它不是一个合法的立即数。

    判断小技巧

    快速判断一个数是不是有效立即数的方法是看最低几位为 0 的个数是不是偶数个(表述的有点问题)。

    我来解释一下:比如上面那个 #0x0000f200,其中我们猜测 Immed_8 为 1111 | 0010,这个数右边还有 0000 | 0000 |,是偶数个 0,因此是有效立即数。而我们看 0x132,我们猜测 Immed_8 为 1001 | 1001,右边只有一个 0,因此不是有效立即数。

    加载不合法立即数

    如果我们想要加载一个不合法的立即数该怎么办呢?

    此时我们可以使用 LDR 伪指令代替,比如下面代码中的 0x20026 就不是有效立即数,因此我们不能使用 MOV R1, #0x20026

    MOV R0, #0x18   ; 传送到软件中断的参数
    LDR R1, =0x20026 ; 传送到软件中断的参数
    SWI 0x123456    ; 通过软件中断指令返回
    

    相关资料

    下面是 ARM Architecture reference Manual 这本书上的相关章节

    在这里插入图片描述在这里插入图片描述

    展开全文
  • 主要是以柜体的方式进行储存,比较安全高效,所以很多档案馆储存资料的时候都采购档案密集柜这种档案装具。那么,什么样的档案密集柜是好的密集柜呢?好的档案密集柜的承重由什么来判断呢。一般市场上的档案密集架都...

    档案密集柜是一种可以移动文件柜,主要适用于各种档案馆、院校等等,用来储存比较有价值的档案资料等物品。主要是以柜体的方式进行储存比较安全高效,所以很多档案馆储存资料的时候都采购档案密集柜这种档案装具。那么,什么样的档案密集柜是好的密集柜呢?好的档案密集柜的承重由什么来判断

    2726691f055e0a9e6b150521918ffe50.png

    一般市场上的档案密集架都是依照国家标准和实际使用的情况进行生产的,密集柜的承重问题和材料的厚度、密集柜的工艺有关材料的厚度越厚,密集柜的单层承重能力越强。不过,考虑到很多厂家的生产工艺技术,材料的厚度很难超过1.0mm,太厚的话就不能进行折弯工艺找到专业的厂家,就不用太担心档案密集柜的承重问题了,厂家从三方面进行生产,客户也只需要通过这三个方面就可以进行判断了。

    第一、从生产的原料冷轧钢材进行判断

    注重产品承重质量的厂家在进行生产档案密集柜的时候,所采用的生产原材料就是国家标准的一级冷轧钢板整个密集柜的结构都是达到标准的,组装后非常的坚固耐用。

    1acca71258f12570d08959c91bc10899.png

    第二、从厂家生产工艺进行判断

    好的密集架厂家,是有实力的,生产使用的设备和工艺是比较先进的,这个从产品的一些细节就可以体现出来例如档案密集柜的外表光滑,无毛刺,粗细一致,这就是一个好产品的体现

    第三、从档案密集柜的配件和机械结构进行判断

    好产品才能带来好体验,质量好的密集柜传动结构非常的灵活轻便,轨道上有防倾倒装置,使用起来安全有保障。密集柜的手柄有折叠式和轮盘式的摇把,不占用通道空间,并且每组密集柜的都配置有制动装置从很多配件处来判断密集柜的质量是一个很简单的方法。

    档案密集柜是长久使用并且大量储存档案的设备,所以在承重质量上一定要过关不然后期麻烦的还是使用者,所以客户要找专业厂家进行采购。

    我们全体瑞好人员将在探索奋进中走出企业创新之路,勇敢拼搏,谱写出企业发展的崭新篇章同时热烈欢迎客户来我厂考察、参观、技术交流,与您共建良好紧密的合作伙伴关系。

    f55205fda9f67f39ef89ce6252f72580.png

    往期回顾

    档案室的档案调阅管理制度

    企事业单位采购档案密集架的标准有三个

    266a67a0b59dc5de6a87b1de9b6a30e4.png

    7adbb5c2aea46b10989d8f663860ce6c.png

    c44b353ad7c2ba06922d5481edbcce37.png

    展开全文
  • 寻址方式判断 2.汇编语言-8086指令、典型函数调用约定 @1 8086常用运算指令 @2 8086跳转指令 @3 常见函数调用约定 3.汇编语言-识别高级语言中的汇编代码 @1 常量/变量/指针 @1-1.常量 @1-2-1....
  • 如何快速判断立即数

    2020-02-17 17:51:11
    目录一、什么是立即数二、什么是立即寻址三、如何判断立即数 一、什么是立即数  要想判断立即数,首先要了解什么是立即数。... 立即寻址方式的目的就是将操作数紧跟在操作码后面,与操作码一起放在指令代...
  • 在ARM汇编的数据处理指令中经常会使用到常数,而ARM汇编中规定使用的常数必须是立即数。 在讨论什么是立即数,为什么有立即数,如何快速...ARM有九种寻址方式:1.寄存器寻址2.立即寻址3.寄存器移位寻址4.寄存器间接寻
  • 汇编指令长度的判断

    2018-11-04 11:50:00
    汇编指令长度与寻址方式有关,规律或原则如下: 一、没有操作数的指令,指令长度为1个字节 二、操作数只涉及寄存器的的指令,指令长度为2个字节 如:mov bx,ax 三、操作数涉及内存地址的指令,指令长度为3个字节...
  • 汇编语言——汇编指令长度的判断

    千次阅读 2018-11-04 07:57:56
    汇编指令长度与寻址方式有关,规律或原则如下: 一、没有操作数的指令,指令长度为1个字节 二、操作数只涉及寄存器的的指令,指令长度为2个字节     如...
  • 1.操作系统是16位还是32位是跟它的地址寻址方式相关的(需要CPU支持,但与CPU字长没有必然联系),因此可以直接通过指针(地址)的长度来判断: cout 2.如果不允许用sizeof,则通过整数的表示范围来判断,16...
  • 操作系统是16位还是32位是跟它的地址寻址方式相关的(需要CPU支持,但与CPU字长没有必然联系),因此可以直接通过指针(地址)的长度 来判断: cout (sizeof(int *)==4 ? "32 bit" : "16 bit") ; 2.如果不...
  • 判断出入栈的顺序序列是否合法(向函数传递一维数组)向函数传递数组问题判断出入栈的顺序序列是否合法代码实现 向函数传递数组问题 ...也就是被调函数是通过间接寻址方式访问主调函数中的数组元素值。
  • 但是内存不是按bit位来存储信息的,按字节编号(地址)来寻址。 如果我们要把寄存器的数据保存到内存中去,那么怎么做呢? 计算机中有两种内存存储模式: 大端模式:(Big_Endian) 是指数据的高字节(高位)保存在...
  • 1.操作系统是16位还是32位是跟它的地址寻址方式相关的(需要CPU支持,但与CPU字长没有必然联系),因此可以直接通过指针(地址)的长度来判断: cout << (sizeof(int *)==4 ? "32 bit" : "16 bit") << ...
  • 六种普通寻址方式 直接寻址 有效地址就是真实地址 间接寻址方式 存储的是数据地址的地址 寄存器寻址 操作数在寄存器里面 寄存器间接寻址 寄存器里面存放的是操作数的地址 隐含寻址 地址不是明显的给出 立即寻址...
  • 它的实现是在插入一个元素的时候,先通过哈希函数进行判断,若是发生哈希冲突,就以当前地址为基准,根据再寻址的方法(探查序列),去寻找下一个地址,若发生冲突再去寻找,直至找到一个为空的地址为止。...
  • 精.选 3.1访问内存单元的寻址方式有几种它们具体是哪些 3.2指出下列各种操作数的寻址方式 1)[BX] 2)SI 3)435H 4)[BP+DI+123] 5)[23] 6)data(data是一个内存变量名...3.4判断下列操作数的寻址方式的正确性对正确的指出其
  • 一、EtherCAT 寻址方式 1.网段寻址 EtherCAT 主站与网段之间存在着不同的寻址方式,利用以太网数据帧头的 MAC 地址来寻址就是EtherCAT 网段寻址。 具体的方式有以下两种。 开发模式:主站设备通过以太网交换机与...
  • 2020-01-03

    2020-01-03 07:45:40
    掌握各种数据寻址方式,能够判断属于哪种寻址方式 掌握传送指令的用法,格式要正确 掌握堆栈的出栈入栈指令,SP寄存器的变化 注意指令暗含使用的寄存器,例如MUL CBW XLAT 等的用法, 掌握所有加...
  • 判断下列说法是否正确。 A、 立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。 B、 指令周期是执行一条指令的时间。 C、 指令中直接给出的操作数称为直接寻址。
  • 执行过程:在取址周期后,需要判断是否有间址周期,如果没有就进入到了执行周期,在执行周期...因为寻址方式的不同,所以有可能是间址寻址,所以在执行周期中要取出操作数,需要进行两次访存,间址周期执行的是将操作
  • 前言 即将参加今年的秋招,校招比较考核学生的底层知识,开始撸操作系统、计算机组成原理、计算机网络以及Java的知识了。希望能在2020年本就不怎么...寻址方式(百度)3.1.指令寻址3.2.数据寻址四、多层次的存储器1.
  • 1:算术 / 逻辑运算单元74181ALU可完成:16种算术运算功能和16种逻辑运算功能。 2:存储单元是指:存放一个机器字的所有存贮元集合。...5:用某个寄存器中操作数的寻址方式称: 寄存器直接寻址 ...
  • 判断题】电缆对地绝缘测试时拔出防雷元件,主要原因是防雷...【单选题】下列有关人们对未来的向往和追求中,属于社会理想的是( )【单选题】精密量距的倾斜改正为()【单选题】S7 有四种寻址方式:立即寻址、存储器直...
  • 【单选题】PLC通讯中传输速录是指单位时间内传输的信息量,常用波特碌来表示,波特率的单位是()【单选题】指令“MOVB ACO,VBO”中操作数的寻址方式是()【判断题】EFS加密是基于公钥策略的, 对用户是透明的。...
  • 汇编语言程序设计——分支结构例1

    千次阅读 2019-07-31 21:08:01
    汇编语言程序设计——分支结构例1 设计目标 设计分支程序,实现下列公式计算。X、Y 为字型。假设 X 单元中保存三个数:9,-6,34,分别作判断...(3)采用寄存器相对寻址方式(MOV AX,X[SI])取出 X 的三个值; ...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

判断寻址方式