汇编语言作业(六)

  • 目录

    一、实验目的

    二、实验内容

    三、实验步骤以及结果

    四、实验结果与分析

    五、实验总结


    一、实验目的

    1. 掌握加减法运算指令对各状态标志位的影响及测试方法
    2. 掌握汇编语言长整数的加法的操作方法
  • 二、实验内容

  1. 对于以下几组数,

       087H和034H

       0C2H和5FH

       0F3H和0F3H,编程求这两组数的和与差

     1)若这几组数都是无符号数,记录计算结果并考虑计算结果对标志寄存器中CF、OF、ZF、SF、PF 等状态标志位的以下表的格式记录下来。

     2)如果是有符号数的加法和减法,上面小题的指令适用吗?此时如何看待计算结果?

操作数1

操作数2

操作指令

计算结果

CF

ZF

OF

SF

AF

PF

087H

034H

ADD

0CBH

0

0

-

2. Data1 和Data2 是两个三字节的无符号整数,尝试编写汇编程序计算得到Data1 和Data2的和,将结果存到以ans为首地址的缓冲器区中 假如Data1 存放的数据为 0FFEEDDH,Data2 :102236H,则结果    101113H。

3. 计算(V-(X*Y+Z-540))/X,其中X、Y、Z、V均为16位带符号数,假设初始数据分别装入X,Y,Z,V单元,要求将计算的结果放入以ans为首地址的缓冲器区中。

参考初始值:

   V:0124H  X :0FE1CH     Y:023FH Z:8230H

三、实验步骤以及结果

1.对于以下几组数,

       087H和034H

       0C2H和5FH

       0F3H和0F3H,编程求这两组数的和与差

     1)若这几组数都是无符号数,记录计算结果并考虑计算结果对标志寄存器中CF、OF、ZF、SF、PF 等状态标志位的以下表的格式记录下来。

     2)如果是有符号数的加法和减法,上面小题的指令适用吗?此时如何看待计算结果?

第一版代码如下:

stack segment stackstack endsdataseg segmentdata1 db 087h,0c2h,0f3hdata2 db 034h,5fh,0f3h
dataseg endscode segment
assume cs:code, ds:dataseg, ss:stackstart:	mov ax, datasegmov ds, axmov al,data1add al,data2mov al,data1sub al,data2mov al,[data1+1]add al,[data2+1]mov al,[data1+1]sub al,[data2+1]mov al,[data1+2]add al,[data2+2]mov al,[data1+2]sub al,[data2+2]mov ah, 4chint 21h
code endsend start

结果符合题意,结果在下面表格中。

操作数1

操作数2

操作指令

计算结果

CF

ZF

OF

SF

AF

PF

087H

034H

ADD

0CBH

0

0

0

1

0

1

087H

034H

SUB

053H

0

0

1

0

0

1

0C2H

5FH

ADD

21H

1

0

0

0

1

1

0C2H

5FH

SUB

63H

0

0

1

0

1

1

0F3H

0F3H

ADD

0E6H

1

0

0

1

0

0

0F3H

0F3H

SUB

00H

0

1

0

0

0

1

2. Data1 和Data2 是两个三字节的无符号整数,尝试编写汇编程序计算得到Data1 和Data2的和,将结果存到以ans为首地址的缓冲器区中 假如Data1 存放的数据为 0FFEEDDH,Data2 :102236H,则结果    101113H。

代码如下:

stack segment stackstack endsdataseg segmentdata1 db 0FFh,0EEh,0DDhdata2 db 10h,22h,36hans db 4 dup(?)
dataseg endscode segment
assume cs:code, ds:dataseg, ss:stackstart:	mov ax, datasegmov ds, axmov ah,[data1+2]adc ah,[data2+2]mov [ans+2],ahmov ah,[data1+1]adc ah,[data2+1]mov [ans+1],ahmov ah,[data1]adc ah,[data2]mov ans,ahmov ah, 4chint 21h
code endsend start

Debug观察结果是否属实:

可见DS=076A

程序将结束时查看内存内容:

076A:0006即DS:ans,发现从0006到0008的值为10 11 13,符合题意。

3. 计算(V-(X*Y+Z-540))/X,其中X、Y、Z、V均为16位带符号数,假设初始数据分别装入X,Y,Z,V单元,要求将计算的结果放入以ans为首地址的缓冲器区中。

//实验3我的结果有问题,可参考IBM-PC汇编语言程序设计(第2版)P67右下角

参考初始值:

   V:0124H  X :0FE1CH     Y:023FH Z:8230H

核心代码:

X*Y的结果 DX:AX=FFFBCOE4

X*Y+Z-540的结果 DX:AX=FFFC40F8

V-(X*Y+Z-540)的结果0003c02c

最终结果:

商为FFF9(即-7),余数为4F7C

四、实验结果与分析

可见第三部分。

  • 五、实验总结

    1. 既定任务基本完成,除任务1的思考部分。
    2. 任务1填表格部分印象深刻,需要一个个查找标志是什么意思,还要与代码对照理解,进而理解溢出、进位、符号等等功能的作用。

长整数加减法可拆分为短整数有进位加减法,通常一个add下面要跟一个adc X,0,sub也是同理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/25882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「网络原理」三次握手四次挥手

🎇个人主页:Ice_Sugar_7 🎇所属专栏:计网 🎇欢迎点赞收藏加关注哦! 三次握手&四次挥手 🍉连接管理🍌三次握手🍌意义🍌四次挥手🍌TCP 状态转换…

【web本地存储】storage事件,StorageEvent对象介绍

storage事件 Web Storage API 内建了一套事件通知机制,当存储区域的内容发生改变(包括增加、修改、删除数据)时,就会自动触发storage事件,并把它发送给所有感兴趣的监听者,因此,如果需要跟踪存…

Flink⼤状态作业调优实践指南:状态报错与启停慢篇

摘要:本文整理自俞航翔、陈婧敏、黄鹏程老师所撰写的大状态作业调优实践指南。由于内容丰富,本文分享终篇状态报错与启停慢篇,主要分为以下四个部分: 检查点和快照超时的诊断与调优 作业快速启动和扩缩容方案 总结 阿里云企业级…

creo学习一

设置好当前配置后,导出config配置文件,并覆盖掉此路径下的旧文件,使得新配置永久生效,这样每次打开软件都是新配置的设置: 系统颜色的导出: 打开版本的问题: 不能有弱尺寸: 注意&a…

分享一个 .NET Core Console 项目中应用 NLog 写日志的详细例子

前言 日志在软件开发中扮演着非常重要的角色,通常我们用它来记录应用程序运行时发生的事件、错误信息、警告以及其他相关信息,帮助在调试和排查问题时更快速地定位和解决 Bug。 通过日志,我们可以做到: 故障排除和调试&#xff…

MySQL普通表转换为分区表实战指南

码到三十五 : 个人主页 引言 本文将详细指导新手开发者如何将MySQL中的普通表转换为分区表。分区表在处理庞大数据集时展现出显著的性能优势,不仅能大幅提升查询速度,还能有效简化数据维护工作。通过掌握这一技巧能够更好地应对数据密集型应…

《编程小白变大神:DjangoBlog带你飞越代码海洋》

还在为你的博客加载速度慢而烦恼?DjangoBlog性能优化大揭秘,让你的网站速度飞跃提升!本文将带你深入了解缓存策略、数据库优化、静态文件处理等关键技术,更有Gunicorn和Nginx的黄金搭档,让你的博客部署如虎添翼。无论你…

解决阿里云的端口添加安全组仍然无法扫描到

发现用线上的网站扫不到这个端口,这个端口关了,但是没有更详细信息了 我用nmap扫了一下我的这个端口,发现主机是活跃的,但是有防火墙,我们列出云服务器上面的这个防火墙list,发现确实没有5566端口 参考&a…

大数据解决方案案例:电商平台日志分析

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

AI作画工具介绍

目录 1.概述 2.Stable Diffusion 2.1.诞生背景 2.2.版本历史 2.3.优点 2.4.缺点 2.5.应用场景 2.6.未来展望 3.Midjourney 3.1.诞生背景 3.2.版本历史 3.3.优点 3.4.缺点 3.5.应用场景 3.6.未来展望 4.总结 1.概述 AI作画工具是一种运用人工智能技术&#xff…

万向节锁死(Gimbal Lock)

Gimbal Lock是一个常见的3D动画问题,主要由旋转顺序引起的。我来详细解释一下它的成因: 在三维空间中,任何旋转都可以分解为绕X,Y,Z三个轴的欧拉旋转(Euler Rotation)。每个轴的旋转是按照一定顺序进行的,比如XYZ或ZYX等。 理论上,通过这三个旋转值的组合,可以达到任意的空间…

require.context()函数介绍

业务需求&#xff1a; 前端Vue项目怎样读取src/assets目录下所有jpg文件 require.context()方法来读取src/assets目录下的所有.jpg文件 <template><div><img v-for"image in images" :src"image" :key"image" /></div> …

九、C语言:隐式类型转换(整型提升与算数转换)

一、隐式类型转换 C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度&#xff0c;表达式中的字符和短整型操作数在使用之前被转换为普通整型&#xff0c;这种转换称为整型提升。 二、整型提升 //1.表达式的整型运算要在CPU的相应运算器件内执行&#xff…

Nginx 精解:正则表达式、location 匹配与 rewrite 重写

一、常见的 Nginx 正则表达式 在 Nginx 配置中&#xff0c;正则表达式用于匹配和重写 URL 请求。以下是一些常见的 Nginx 正则表达式示例&#xff1a; 当涉及正则表达式时&#xff0c;理解各个特殊字符的含义是非常重要的。以下是每个特殊字符的例子&#xff1a; ^&#xff1…

【Python】pandas中的read_excel()和to_excel()函数解析与代码实现

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

类和对象的学习总结(一)

面向对象和面向过程编程初步认识 C语言是面向过程的&#xff0c;关注过程&#xff08;分析求解问题的步骤&#xff09; 例如&#xff1a;外卖&#xff0c;关注点菜&#xff0c;接单&#xff0c;送单等 C是面向对象的&#xff0c;关注对象&#xff0c;把一件事拆分成不同的对象&…

java之面向对象2笔记

1 接口(interface) 1.1 概述 接口&#xff08;Interface&#xff09;在计算机科学中&#xff0c;特别是在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;是一个重要的概念。它定义了一组方法的规范&#xff0c;但没有实现这些方法的具体代码。接口的主要目的是确保类…

SOA的设计模式_3.微服务模式

SOA的架构中&#xff0c;复杂的ESB企业服务总线依然处于非常重要的位置&#xff0c;整个系统的架构并没有实现完全的组件化以及面向服务&#xff0c;它的学习和使用门槛依然偏高。而微服务不再强调传统SOA架构里面比较重的ESB企业服务总线&#xff0c;同时SOA的思想进入到单个业…

Linux系统下 安装 Nginx

一、下载Nginx安装包 压缩包下载地址&#xff1a;nginx: download 服务器有外网&#xff0c;可直接使用命令下载 wget -c https://nginx.org/download/nginx-1.24.0.tar.gz 二、安装Nginx 1、解压 tar -zxvf nginx-1.24.0.tar.gz 2、安装Nginx所需依赖 yum install -y gc…

SLAM小题目

1、最小二乘题目&#xff1a; 假设有三个WIFI热点&#xff0c;位置分别在(x1,y1), (x2,y2), (x3,y3), 移动端测量到每一个热点的距离L1,L2和L3&#xff0c;要求解移动端的位置. #include <iostream> #include <vector> #include <cmath> class Point { pub…