关键词:
实验3:寄存器数据的存储与变化-算术运算对标志位的影响
1.项目设计
将操作数放在2000H和2001H两个单元中,编程进行以下的算术运算 ,并记录标志位的状态。
(1)41H+3BH,结果放在2002H单元中;
(2)41H+5AH,结果放在2003H单元中;
(3)AFH+7EH,结果放在2004H单元中;
(4)E3H+1DH,结果放在2005H单元中;
(5)41H-3BH,结果放在2006H单元中;
(6)3BH-41H,结果放在2007H单元中;
2.项目实施
(1)写出指令代码段,例如41H+3BH
MOV AX, [2000H]
ADD AX, [2001H]
MOV [2002H], AX
(2)写出指令的机器代码:
例如上面指令的机器代码为 A0 00 20
04 01 20
A2 02 20
(3)在debug中调试程序。
3.项目运行
(1)运行每一段指令,按表1格式在项目报告中记录结果。
实验步骤:
直接进入DOSBox 进行相关挂载操作
切换至c盘 输入debug
- -A命令进入编写代码界面
- -R查看当前寄存器中指令
- -T查看寄存器下一地址的内容以及相应的机器码
- -D查看DS内数据存放的结果
1.1)程序1代码以及机器码及结果
分别写入三条语句来进行计算41H+3BH并放到2002H单元内
按ENTER键 再输入R查看当前寄存器中的内容,可以看到对应汇编语句所对应的机器码。 由于涉及到32位与64位操作系统,所生成的机器码会有所差别。
使用-T查看寄存器下一地址的内容和相应的机器码
注意:使用-T查看直到运行完最后一条汇编指令为止。
此时,使用-D xxx xxx
即-D 2002 2002即可查看写在2002H单元内的内容
可知值为7C 相对于的NV UP EI PL NZ NA PO NC 为状态标志 ,具体参数参见此图
当然例题1也能 使用AX 立即数计算 其也能计算41H+3BH的值。结果存在2002H 结果都是7C 但机器码不同
如图:
2,1)程序2的相关指令和结果
得到对应的SF,ZF,CF
3)DEBUG写入代码进行T测试
3.3)程序3代码以及机器码
3.3)程序3结果及SFZFCF
4)找到02的值
4.1)程序4代码以及机器码
4.3)得到SF,ZF,CF
5.1)程序5代码以及机器码
5.2)得到SF,ZF,CF与2006h的值
6.1)程序6代码以及机器码
6.2)程序6结果及SFZFCF
7.1)程序7代码以及机器码以及结果
个人得到的程序运行结果及CF,SF,ZF值
相关参考资料
机器码的构成结构
DOSBox下debug的使用 https://www.jianshu.com/p/bf7caf046420
机器码 与 汇编指令的关系https://blog.csdn.net/z3410218746/article/details/7485602
80x86寻址方式及指令系统https://wenku.baidu.com/view/d9bb76a40029bd64783e2c6a.html
计算机组成原理实验报告单算数运算及对标志位的影响https://wenku.baidu.com/view/5ed10f72d1f34693dbef3e12.html
tstcmpbnebeq指令
1、tst:逻辑处理指令,用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR中条件标志位的值。当前运算结果为1,则Z=0;当前运算结果为0,则Z=1 cmp:算数处理指令,用于把一... 查看详情
汇编语言从入门到精通-标志位的说明
16位标志寄存器——共用了9个标志位,它们主要用来反映CPU的状态和运算结果的特征。标志位的分布如下表所示。 1514131211109876543210 OFDFIFTFSFZF AF PF CF32位标志寄存器——32位CPU也把标志寄存器扩展... 查看详情
节
CPU包含运算器、寄存器一、数据寄存器:AX用于算术、逻辑运算、外设传送信息BX用于存放存储器地址CX用于移位指令、循环和串处理指令中用作隐含的计数器DX用于存放双字的高十六位其中AX、CX、DX不能作为基址和变址储存器来... 查看详情
汇编move指令如何使用
...的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的),其特点是不破坏源地址单元的内容。 例如: 1、MOVAX,2000H;将16位数据2000H传送到AX寄存器。2、MOVAL,20H;将8位... 查看详情
计算机系统基础
...下1算术逻辑单元ALU:数据的算术运算和逻辑运算。2累加寄存器AC:通用寄存器,为ALU提供一个工作区,用来暂存数据(可以用于传送和暂存数据,也可以参与算术逻辑运算,并保存结果)3数据缓冲寄存器DR:写内存时,暂存指... 查看详情
汇编11:标志寄存器(代码片段)
标志寄存器CPU内部有一种特殊的寄存器名为标志寄存器,它有以下几种作用:1、存储相关指令的某些执行结果2、为CPU执行相关指令提供行为依据3、控制CPU的相关工作方式8080CPU中的标志寄存器是flag,它有16位,其中存储的信息... 查看详情
8086汇编cmp指令
...于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。格式:cmp操作对象1,操作对象2功能:计算操作对象1–操作对象2原理:通过做减法运算影响标志寄存器,标志寄存器的相关位的取值,体现比较的结果... 查看详情
实用汇编指令
...X带链接和状态切换的无条件跳转Bloc_地址BEQ,BNE2.存储器与寄存器交互数据指令核心3.数据传送指令MOV:将立即数或寄存器的数据传送到目标寄存器←MOVR0,#8R0=84.数据算术运算指令←ADD,SUB,MUL,DIV有符号,无符号运算;带进位运算5.数... 查看详情
对x86汇编的理解与入门
...语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令、逻辑计算指令、算数运算指令),以及函数的调用规则。个人认为:在理解了本文后,基本可以无障碍地阅... 查看详情
汇编影响标志位的运算
今天翘了毛概课,在宿舍里盖着小毛毯做汇编作业,遇到一个题目是给出一组指令,问每一步指令完成后,标志位是什么什么运算会改变标志位呢?在网上查了查(1)加法指令:ADD、ADC、INC、XADD除了INC不影响CF标志位外,... 查看详情
《程序是怎样跑起来的》第一章读后感
1.CPU的内部有寄存器、控制器、运算器和时钟四个部分构成各部分之间的有电流信号,相互连通。一个CPU内部会有很多的寄存器。寄存器可以用来暂存指令、数据等处理对象。控制器负责把内存上的指令数据等读入存储器,并根... 查看详情
intel8080指令(考试版)
...法指令除法指令三、逻辑运算指令一、数据传输指令用于寄存器、存储单元和输入输出端口之间的数据或地址传送。1.通用数据传送指令.MOV:最基本的通用数据传送指令。传送字或字节。XCHG:数据交换指令 交换字或... 查看详情
计算机系统知识
...码、补码)?运算器算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成。算术逻辑运算单元(ALU)的基本功能为加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、求补等操作。计算机运行时,... 查看详情
汇编-寄存器
CPU由运算器、控制器、寄存器等组成,由内部总线相连。在CPU中,运算器进行信息处理,寄存器进行信息存储,控制器控制各种器件进行工作。 寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中... 查看详情
汇编各寄存器的作用说明
4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP)1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息... 查看详情
cpu的组成与功能
...、输入设备、输出设备包括算术逻辑运算单元,以及通用寄存器数据加工:算术/逻辑运算PC(ProgramCounter)----------程序计数器IR(InstructionRegister)--------指令寄存器AR(AddressRegister)-----------地址寄存器DR(DataRegister)----------------数据缓... 查看详情
汇编学习笔记2(代码片段)
一个典型的CPU由运算器,控制器,寄存器等器件组成内部总线实现CPU内部各个器件之间的联系,外部总线就是地址总线,控制总线等的这些联系CPU和主板上其他器件的联系8086CPU的所有寄存器是16位的16位的CPU一次性最多可以处理16位的... 查看详情
计算机组成与体系结构
... 算术逻辑单元ALU:数据的算术运算和逻辑运算累加寄存器AC:通用寄存器,为ALU提供一个工作区,用在暂存数据数据缓存寄存器DR:写内存中,暂存指令或数据状态条件寄存器PSW:存状态标志或控制标... 查看详情