汇编-寄存器数据的存储与变化-算术运算对标志位的影响

实验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

原文地址:https://www.cnblogs.com/whatiwhere/p/9094228.html

时间: 2024-10-04 02:04:01

汇编-寄存器数据的存储与变化-算术运算对标志位的影响的相关文章

汇编--指令系统 数据传送类指令

(1) 数据传送类指令 通用数据传送指令:MOV .PUSH.POP.XCHG 交换指令 累加器专用传送指令: IN.OUT .XLAT 换码指令 地址传送指令:LEA.LDS.LES 标志寄存器传送指令:LAHF.SAHF.PUSHF.POPF 类型转换指令:CBW.CWD.CDQ.BSWAP MOV指令 对于存储器单元与立即数同时作为操作数的情况,必须显式指明   ;byte ptr 说明是字节操作   ;word ptr 说明是字操作 mov [bx],[si+2]  错误 不允许立即数传

汇编--常用汇编指令与标志位关系

加法指令 ADD (addition) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最高有效位向高位无进位 OF=1   两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反. OF=0   两个不同符号数相加,或同符号数相加,结果符号与其相同. 带进位加法指令 ADC (add with carry) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最低有效位相高位无进位 OF=1   两个同符号数相加,结果符号与其相反, O

常用汇编指令及其影响的标志位

加法指令 ADD (addition) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最高有效位向高位无进位 OF=1   两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反. OF=0   两个不同符号数相加,或同符号数相加,结果符号与其相同. 带进位加法指令 ADC (add with carry) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最低有效位相高位无进位 OF=1   两个同符号数相加,结果符号与其相反, O

【汇编指令】arm指令集之但寄存器数据load/store (加载存储)

数据的传送: LDR              STR                   .WORD LDRB            STRB              .BYTE LDRH             STRH            .HALFWORD LDR 和STR 加载/存储字和无符号字节指令.使用单一数据传送指令(STR 和LDR)来装载和存储单一字节或字的数据从/到内存.LDR指令用于从内存中读取数据放入寄存器中:STR 指令用于将寄存器中的数据保存到内存.指令格式如下

汇编 - 寄存器

CPU 由 运算器.控制器.寄存器等组成,由内部总线相连. 在CPU中,运算器进行信息处理,寄存器进行信息存储,控制器控制各种器件进行工作. 寄存器是CPU中程序员可以用指令读写的部件.程序员通过改变各种寄存器中的内容来实现对CPU的控制. 能用寄存器 8086 CPU 所有寄存都是16位的,可以存放两个字节. AX, BX, CX, DX 四个寄存器通常用来存放一般性的数据,称为能用寄存器. 一个16位寄存器所能存储的数据最大值为多少? 2^16 次方 32位.64位机表示: 1. 运算器一次

大数据时代的万象变化

大数据时代的万象变化 作者:廖恒 近来多次和百度.阿里.腾讯.中移动数据中心的架构师进行交流,同时也在网上的论坛/社区主导大数据分析范例的一些讨论,与互联网/云开发人员进行沟通.由此,我愉快地发现,大数据分析在中国非常普遍:不光是星巴克.纸牌屋等美国文化元素在中国广受追捧:Hadoop也受到广泛接纳,并且在中国的云开发人员的讨论中占据了主导地位.但是,和其他流行事物一样,人们在追捧讨论的同时也会考虑它当前的热度是否合理."如果我讲Hadoop有些名不副实,会不会有人来踢馆?"--可能全

C语言博客(4)编程基础之怎样理解二进制思想以及数据的存储?

本次我要描述的编程基础的内容是怎样理解二进制思想以及数据的存储,这也是许多初学者需要的编程基础. 我们平时使用的数字都是由 0~9 共十个数字组成的,例如 1.9.10.297.952 等,一个数字最多能表示九,如果要表示十.十一.二十九.一百等,就需要多个数字组合起来. 例如表示 5+8 的结果,一个数字不够,只能"进位",用 13 来表示:这时"进一位"相当于十,"进两位"相当于二十. 因为逢十进一,也因为只有 0~9 共十个数字,所以叫做十

全局、局部变量,数据的存储类别

[局部变量](local variable) 1.在一个函数中定义的,作用范围只在本函数范围内. 2.在一个复合语句中定义,作用范围只在复合语句中. [全局变量](global variable) #定义在函数之外,作用范围 从变量定义开始 到 源文件结束. [同名局部变量] #不同作用域的同名局部变量,互相不干扰,在内存中是处于不同的存储空间. [局部变量 与 全局变量 同名] #当局部变量与全局变量重名时,由于局部优先原则,全局变量被屏蔽. [全局变量的缺点] ————[高内聚,低耦合] 全

MySQL数据库如何解决大数据量存储问题

利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开关量历史数据表,这两张表字段设计的很简单(OrderNo,Value,DataTime).基本上每张表每天可以增加几千万条数据,我想问如何存储数据才能不影响检索速度呢?需不需要换oracle数据库呢?因为我是数据库方面的新手,希望可以说的详细一点,万分感谢!!?-0-#暂时可以先考虑用infobri