汇编语言——数据传送类指令

数据传送类指令

作用:把数据、地址或立即数传送到寄存器或存储单元中

通用传送指令

传送指令MOV
  • 格式:MOV 目的操作数,源操作数
    功能:将源操作数的内容传送给目的操作数,源操作数不变

在这里插入图片描述

  • 注:MOV指令不改变标志位。
    操作数的位数需要匹配。即8位配8位,16位配16位
    两个操作数不能同时为段寄存器,也不能为存储器
    CS不能作为目的操作数
    IP不能做目的操作数和源操作数
    立即数不能直接传送给段寄存器
    对于存储器单元与立即数同时作为操作数的情况,必须显式指明;byte ptr指示字节类型,word ptr指示字类型、
  • 例子
    MOV AX, 1010H
    MOV BL, 58H
    MOV BYTE PTR [BX], 10H
    MOV WORD PTR [BX], 2255H
    MOV BYTE PTR [SI+20H], 10H

在这里插入图片描述

数据交换指令XCHG
  • 格式:XCHG 寄存器,存储器操作数/寄存器
  • 功能:实现源操作数和目的操作数之间的的内容互换
  • 注:不能存储器与存储器之间交换
    XCHG指令不影响标志位
mov ax,1234h	;ax=1234h
mov bx,5678h	;bx=5678h
xchg ax,bx
;ax=5678h,bx=1234h
xchg ah,al	;ax=7856h
表转换指令XLAT (了解)
  • 格式 XLAT 或XLAT 首地址
  • 功能:将AL与BX寄存器内容之和作为偏移地中,将其所对应的存储单元的内容送入AL寄存器。
  • 执行前:在内存建立一个字节表格,内含要转换成的目的代码
    BX——存放表格首地址
    AL——存放相对表格首地址的偏移量
  • 执行后:将AL寄存器的内容转换为目标代码
    在这里插入图片描述

堆栈存储指令(字操作 2个字节)

  • 堆栈:后进先出FILO,位于堆栈段;SS段寄存器记录其段地址
  • 堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定
进栈指令PUSH
  • PUSH:进栈指令先使堆栈指针SP-2,然后把一个字操作数存入堆栈顶部
  • 格式: PUSH r16/m6/seg;sp<-sp-2(高地址向低地址)
    ;SS:【SP】<-r16/m16/seg
    在这里插入图片描述
出栈指令POP
  • POP:出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针SP+2
  • POP r16/m16/seg ;r16/m16/seg<-SS:[SP]
    ;SP<-SP+2

在这里插入图片描述

  • 堆栈操作的单位是字,进栈和出栈只对字量
    字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节
  • 堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据
  • 作用:临时存放数据,传递参数,保存和恢复寄存器

地址传送指令

功能:地址传送指令将存储器单元的逻辑地址送至指定的寄存器

有效地址传送指令LEA
  • 特点:传送的是存储器操作数的地址(偏移地址,段地址),而不是内容源操作数必须是存储器操作数,目的操作数是16位通用寄存器。
    OPD可为一个16位的通用寄存器,通常为:BX、BP、SI、DI。OPS可为变量名、标号或地址表达式。
  • LEA r16,mem
    功能:将源操作数的有效地址传送至指定的16通用寄存器
MOV BX,0400H
MOV SI,3CH
LEA BX,[BX+SI+0F62H] ;BX=0400h+003ch+0f62h=139EH

  • 例子
    设BX=0100H,DI=0030H,DS:[0030H]=2436H, 变量DATA的有效地址为0050H
    LEA BP, [3000H] ;执行后 BP=3000H
    LEA BX, [BX+DI] ;执行后 BX=0130H
    LEA SI, DATA ;执行后 SI=0050
    LEA SI, [DI] ;执行后 SI=0030H
    MOV SI, [DI] ;执行后 SI=2436H
指针传送指令LDS,LES
  • LDS r16,mem;r16←mem, DS←mem+2
    LDS指令将主存中mem指定的字送至r16,并将mem的下一字送DS寄存器
  • LES r16,mem;r16←mem, ES←mem+2
    LES指令将主存中mem指定的字送至r16,并将mem的下一字送ES寄存器
MOV WORD PTR [3060H],0100H
MOV WORD PTR [3062H],1450H
LES DI,[3060H]	;DI=0100H,ES=1450H
LDS SI,[3060H]	;SI=0100H,DS=1450H
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算机组成原理与汇编语言程序设计课后习题及解答 徐洁,俸远祯 电子工业出版社 第1章 习题一 1.什么是程序存储工作方式? 答:计算机的工作方式——存储程序工作方式。即事先编写程序,再由计算机把这些信息 存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。 2.采用数字化方法表示信息有哪些优点? 用数字化方法表示信息的优点: (1)抗干扰能力强, 可靠性高。 (2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。 (3)数字化的信息可以存储、信息传送也比较容易实现。 (4)可表示的信息型与范围及其广泛,几乎没有限制。 (5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成 了计算机硬件设计的基础。 3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。 4.数字计算机的主要特点是什么? 1. (1) 能在程序控制下自动连续地工作; (2")运算速度快; (3) 运算精度高; (4) 具有很强的信息存储能力; (5) 通用性强,应用领域及其广泛。 5.衡量计算机性能的基本指标有哪些? 答:衡量计算机性能的基本指标: (1)基本字长——参加一次运算的数的位数; (2)数据通路宽度——数据总线一次能并行传送的位数; (3)运算速度——可用 CPU的时钟频率与主频, 每秒平均执行指令数, 典型四则运算的 时间来表示。 (4)主存储器容量——可用字节数或单元数(字数)×位数来表示。 (5)外存容量——常用字节数表示。 (6)配备的外围设备及其性能。 (7)系统软件配置。 7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。 系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。例如WINDOWS98操 作系统,C语言编译程序等,数据库管理系统。 8.对源程序的处理有哪两种基本方式? 对源程序的处理通常有两种处理方式:解释方式和编译方式。 第2章 习题二 1.将二进制数(101010.01)2 转换为十进制数及BCD码。 解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD 2.将八进制数(37.2)8转换为十进制数及BCD码. 解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD 3.将十六进制数(AC.E)转换为十进制数及BCD码. 解: (AC.E)16 =(172.875)10 = (00010111001 4.将十进制数(75.34)10转换为8位二进制数及八进制数、十六进制数。 解: (75.34)10 = (01001011.01010111)2 =(213.256)8 =(4B.57)16 5.将十进制数13/128转换为二进制数. 解: (13/128)10 =(1101/10000000)2 =(0.0001101)2 6.分别写出下列各二进制数的原码、补码,字长(含一位数符)为8位。 (1)0 (2)- 0 (3)0.1010 (4)- 0.1010 (5)1010 (6)-1010 解: 原码 补码 0 00000000 00000000 -0 10000000 00000000 0.1010 0.1010000 0.1010000 - 0.1010 1.1010000 1.0110000 1010 00001010 00001010 -1010 10001010 11110110 7.若X补=0.1010,则X原、真值等于什么? 解:X补=0.1010,则X原=0.1010,真值 X = 0.1010 8.若X补=1.1010,则X原、真值等于什么? 解:X补=1.1010,则X原=1.0110,真值 X = - 0.0110 9.某定点小数字长16位,含1位符号,原码表示,分别写出下列典型值的二进制代码与十 进制真值。 (1)非0最小正数 (2)最大正数 (3)绝对值最小负数 (4)绝对值最大负数 解: 二进制代码 十进制真值 (1)非0最小正数 0.000000000000001 2-15 1-2-15 (3)绝对值最小负数 1.000000000000001 -2-15 (4)绝对值最大负数 10.某定点小数字长16位,含1位符号,补码表示,分别写出下列典型值的二进制代码与 十进制真值。 (1)非0最小正数 (2)最大正数 (3)绝对值最小负数 (4)绝对值最大负数 解: 二进制代码 十进制真值 (1)非0最小正数 0.000000000000001 2-15 (4)绝对值最大负数 1.000000000000000 -1 11.某浮点数字长16位,其中阶码6位,含1位符号位,补码表示,以2为底;尾数10位(含1位数 符),补码表示,规格化。分别写出下
32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。 对低16位数据的存取,不会影响高16位的数据。 这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。 程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用于乘、 除、输入/输出等操作,使用频率很高; 寄存器EBX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器ECX称为计数寄存器(Count Register)。 在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数; 寄存器EDX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址, 在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果, 而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。 2、变址寄存器 32位CPU有2个32位通用寄存器ESI和EDI。 其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量, 用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。 3、指针寄存器 其低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据。 32位CPU有2个32位通用寄存器EBP和ESP。 它们主要用于访问堆栈内的存储单元,并且规定: EBP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据; ESP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。 寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量, 用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。 指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 4、段寄存器 段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成 的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。 CPU内部的段寄存器: ECS——代码段寄存器(Code Segment Register),其值为代码段的段值; EDS——数据段寄存器(Data Segment Register),其值为数据段的段值; EES——附加段寄存器(Extra Segment Register),其值为附加数据段的段值; ESS——堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值; EFS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值; EGS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值。 ..................................
1 目录 课程设计任务书 1 1.设计目的及设计原理 2 1.1设计目的 2 1.2设计原理 3 2.模型机的逻辑框图 3 3.指令系统及其指令格式 4 3.1指令系统 4 3.2指令格式 6 4.微程序的设计及其实现的方法 7 4.1微指令格式的设计 7 4.2后续微地址的产生方法 7 4.3 微程序入口地址的形成 8 5.模型机时序分析 10 6.指令执行流程 11 7.源程序,程序的指令代码及微程序 12 7.1 源程序 12 7.2 程序的指令代码 12 7.3微程序 13 8.实现过程 14 9.课程设计总结 19 课程设计任务书 学生姓名: 陈千 专业班级: 物联网1103班 指导教师: 程艳芬 工作单位:计算机科学与技术学院 题 目: 基本模型机的设计——加减法指令的实现 初始条件: 理论:学完"电工电子学"、"数字逻辑"、"汇编语言程序设计"、和"计算机组成原理"课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。 2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。 3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中加减法指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 时间安排: 周一:熟悉相关资料。 周二:系统分析,设计程序。 周三、四:编程并上实验平台调试 周五:撰写课程设计报告。 指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日 模型机的设计——加减法指令的实现 1.设计目的及设计原理 1.1设计目的 运用所学的知识,通过使用软件HKCPT掌握各个单元模块的工作原理,进一步将其组成完整的系统,构成一台基本的模型计算机,并了解程序编译、加载的过程,以及通过微单步、单拍调试理解模型机中的数据流向。 本实验主要是设计加减法指令的实现,将汇编语言程序设计,数字逻辑与或运算原理以及计算机组成原理3方面的知识结合到一起利用此软件平台实现连续几个数的加减法运算,从而了解逻辑运算运算单元的运行过程。 1.2设计原理 CPU是计算机的核心,它是通过指令和微指令的执行来工作的。指令是计算机要完成的某一项功能,每一条机器指令对应到执行的过程中是一段微程序。一段微程序含多条微指令,而一条微指令又含多个微命令。一个微命令驱动某个硬件部件执行某种操作。通过这样一个关系,从而达到由计算机指令来驱动计算机各个硬部件的协调工作以实现一条指令的执行。 在之前的各个模块实验中,各模块的控制信号都是由实验者手动模拟产生的。而在真正的实验系统中,模型机的运行是在微程序的控制下,实现特定指令的功能。在本实验平台中,模型机从内存中取出、解释、执行机器指令都将由微指令和之相配合的时序来完成,即一条机器指令对应一个微程序。 2.模型机的逻辑框图 简单的模型计算机是由算术逻辑单元、微程序单元、堆栈寄存器单元、累加器,启停、时序单元、总线和存储器单元组成。 在模型机中,我们将要实现RAM的读写指令,寄存器的读写指令,跳转指令,ALU的加、减、与、或指令。把通用寄存器作为累加器A,进行左、右移等指令,整体构成一个单累加器多寄存器的系统。 整机的逻辑框图如下: 3.指令系统及其指令格式 3.1指令系统 本实验平台内采用的是8位数据总线和8位地址总线方式,设计指令系统时,主要考虑的是指令型,寻址方式和编码方式。 指令型包括算术/逻辑运算指令、移位操作指令(带进位或不带进位)、数据传送指令、程序跳转指令(有条件或无条件)、存储器操作指令等。寻址方式包括直接地址寻址、寄存器直接寻址、寄存器间接寻址、立即数寻址等。指令格式的设定一般与机 的字长、存储器的容量以及指令的功能有关。主要包括操作码字段和地址码字段。本实验中操作码为8位,数据传送单位为8位。 指令系统如下表: 指令助记符 指令功能 指令编码 微周期 微操作 取指微指令 T0 PC

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值