当前位置: 首页 > news >正文

汇编语言相关习题

目录

一、 画出8086CPU的工作原理示意图,并将以说明

二、画出80386CPU的工作原理示意图,并将以说明

三、总结16、32和64位CPU的整数和字符串的表示方法和范围:

四、举例说明常用的传输类汇编指令的使用:

五、举例说明常用的7种数据寻址方式和3种内存地址的寻址方式

六、举例说明常用的运算类汇编指令,并编程实现“1+2+3+…+100”求和


一、 画出8086CPU的工作原理示意图,并将以说明

        由于8086CPU采用16位结构,所以8086CPU在内部用地址加法器将两个16地址合成一个20位的物理地址,来提高寻址能力。通过20位的地址总线传送到存储器,在对应的物理地址中寻到相关的指令后,将指令送到指令缓冲器,再通过指令执行器去执行相关的指令。

二、画出80386CPU的工作原理示意图,并将以说明

80386为32位机,有三种工作方式

1、实地址方式(real mode)

实地址方式的工作原理与8086基本相同,其主要区别是32位微处理器能处理32位数据。

2、保护方式(protected mode)

保护方式下,CPU可访问232字节的物理存储空间,段长为232字节,而且还可以实施保护功能

32位微处理器为了支持多任务操作系统,以4个特权级来隔离或保护各用户及操作系统。

3、虚拟8086方式(virtual 8086 mode)

在虚拟方式下,运行8086程序可以尽量利用32位微处理器的保护机构。尤其是32位微处理器允许同时执行8086的操作系统及其应用程序和32位微处理器操作系统的应用程序。

三、总结16、32和64位CPU的整数和字符串的表示方法和范围:

16位PC机中整数的有效范围是-32768~32767(-2^8~2^8-1);

32位PC机中整数的有效范围是-2^16~2^16-1;

64位PC机中整数的有效范围是-2^32~2^32-1。

四、举例说明常用的传输类汇编指令的使用:

MOV 传送字或字节. (mov ax 2把2放入寄存器)。

MOVSX 先符号扩展,再传送。 

MOVZX 先零扩展,再传送。 

PUSH 把字压入堆栈。 

POP 把字弹出堆栈。 

PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈。

POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈。

PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈。 

POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈。

BSWAP 交换32位寄存器里字节的顺序。 

XCHG 交换字或字节。( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

CMPXCHG 比较并交换操作数。( 第二个操作数必须为累加器AL/AX/EAX )

XADD 先交换再累加。( 结果在第一个操作数里 )

XLAT 字节查表转换。

── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 0-FFH); 返回 AL 为查表结果。 ( [BX+AL]->AL)

五、举例说明常用的7种数据寻址方式和3种内存地址的寻址方式

一、7种数据寻址方式

1. 立即寻址方式

立即数包含在指令中,作为指令的一部分。

如 MOV AX 1234H。

2. 寄存器寻址方式

操作数在CPU内部的寄存器中,指令指定寄存器号。

16位操作数,寄存器可以是:AX,BX,CX,DX,SI,DI,SP和BP。

8位操作数,寄存器可以是:AL,AH,BL,BH,CL,CH,DL,DH。

如 MOV AX,BX。

3.直接寻址方式

操作数在寄存器中,指令直接包含操作数的有效地址(偏移地址)。

操作数一般存放在数据段(DS)。

可采用段超越前缀,操作数也可含在其他段中。

如 MOV AX,[8054H]。

若(DS)=2000H,则物理地址=20000H(低四位为0)+8054H=28054H、

则(AX)=物理地址28054H上的字。

主要用于变量。

4.寄存器间接寻址方式

操作数在存储器中,操作数有效地址在SI,DI,BX,BP之一,则一般情况下。

如果有效地址在SI,DI,BX中,则段值默认为DS。

如果有效地址在BP中,则默认的段值为SS。

如 MOV,AX [SI]。

5.寄存器相对寻址方式

操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)或变址寄存器(SI,DI)内容加上指令中给定的位移量。

默认段值同上。

如 MOV AX,[DI+1223H], 默认段值为DS。

6.基址加变址寻址方式

操作数有有效地址由基址寄存器(BX,BP)之一的内容与变址寄存器(DI,SI)之一的内容相加。

默认段值同上。

如 MOV AX,[BX][DI] 等价于 MOV AX,[BX+DI]。

则默认段值为DS。

也可采用段跨越前缀如:

MOV DS:[BP+SI],AL

MOV AX,ES:[BX+SI]  

这种寻址方式适用于数组或表格地处理。

7.相对基址加变址寻址方式

操作数有效地址 EA =(BX或BP)+(SI或DI)+偏移理。

如 MOV AX,[BX+DI+1234H] 等价于:

MOV AX,1234H[BX][DI]

MOV AX,1234H[BX+DI]

MOV AX,1234H[DI][BX]

二、3种内存地址

1.逻辑地址:

  包含在机器语言指令中用来指定一个操作数或一条指令的地址。这种寻址方式在80X86著名的分段结构中表现得尤为具体,它促使MS-DOS或Windows程序员把程序分成若干段。每一个逻辑地址都是有一个段和偏移量组成,偏移量指明了从段开始的地方到时间地址之间的距离。

2.线性地址:(虚拟地址)

  是一个32位无符号整数,可以用来表示高达4GB的地址,也就是高达4294967296个内存单元。线性地址通常用十六进制数字表示。

3.物理地址:

  用于内存芯片级内存单元寻址。它们与从微处理器的地址引脚发送到内存总线上的电信号相对应。物理地址由32位或36位无符号整数表示。

六、举例说明常用的运算类汇编指令,并编程实现“1+2+3+…+100”求和

加法指令add,adc,inc

减法指令SUB,SBB,DEC

比较指令CMP

乘法指令:MUL,IMUL。MUL无符号乘法(字/字节),IMUL有符号乘法(字/字节)

除法指令:div,idiv.div无符号除法(字/字节),idiv有符号除法(字/字节)

求反指令:neg。以0减去操作数

符号拓展指令:CBW,CWD;CBW字节转化为字;CWD,字转化为双字节;

十进制调整指令:daa,das,aaa,aas,aam,aad

DATA SEGMENT
    S DW (?)
DATA ENDS
CODE SEGMENT
     ASSUME CS:CODE,DS:DATA
START:
      MOV AX,DATA
      MOV DS,AX
      MOV CX,100
      MOV AX,0H
      MOV BX,1H
LOOP1:
      ADD AX,BX
      INC BX
      LOOPLOOP1          
      MOV S,AX
      MOV AH,4CH
      INT 21H
 CODE ENDS
      END START
 

                 

相关文章:

  • Java(二):IDEA使用教程
  • Codeforces Round #826 (Div. 3) E,F
  • MPLS 虚拟专用网络 配置实验
  • AppCode 2022Improves compatibility
  • 【 java 多线程】同步锁 (Lock) 解决线程的安全问题
  • 计算机学院第三周语法组及算法组作业
  • Java数据结构 | 二叉树的基本操作
  • IP分片--为什么单次最大传输1472个字节
  • QT中QThread的各个方法,UI线程关系,事件关系详解(5)
  • Flask-05-——(注册功能的实现,六、1将用户提交的注册数据保存在数据库 六、2 发送AJAX请求 六、3验证码的获取六、4验证码倒计时)
  • 【C++】入门(上)
  • MySQL进阶实战1,数据类型与三范式
  • TYUT太原理工大学2022需求工程考试选择题自测版
  • Xilinx selectIO 资源的使用——input方向
  • Day1——数组 二分查找、移除一个数
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • JS 中的深拷贝与浅拷贝
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • JavaScript类型识别
  • javascript数组去重/查找/插入/删除
  • Lsb图片隐写
  • Median of Two Sorted Arrays
  • PAT A1050
  • rc-form之最单纯情况
  • springMvc学习笔记(2)
  • Twitter赢在开放,三年创造奇迹
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 成为一名优秀的Developer的书单
  • 分布式事物理论与实践
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 深度学习入门:10门免费线上课程推荐
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 用element的upload组件实现多图片上传和压缩
  • 在Unity中实现一个简单的消息管理器
  • 智能合约Solidity教程-事件和日志(一)
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​Python 3 新特性:类型注解
  • ​渐进式Web应用PWA的未来
  • #### go map 底层结构 ####
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $NOIp2018$劝退记
  • (0)Nginx 功能特性
  • (11)MATLAB PCA+SVM 人脸识别
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (30)数组元素和与数字和的绝对差
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (力扣)1314.矩阵区域和
  • (十)T检验-第一部分
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • *Django中的Ajax 纯js的书写样式1
  • . Flume面试题