汇编语言作业(六)

  • 目录

    一、实验目的

    二、实验内容

    三、实验步骤以及结果

    四、实验结果与分析

    五、实验总结


    一、实验目的

    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 stack

stack ends

dataseg segment
	data1 db 087h,0c2h,0f3h
	data2 db 034h,5fh,0f3h
dataseg ends

code segment
assume cs:code, ds:dataseg, ss:stack

start:	mov ax, dataseg
		mov ds, ax
		
		mov al,data1
		add al,data2

		mov al,data1
		sub al,data2

		mov 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, 4ch
		int 21h
code ends
		end 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 stack

stack ends

dataseg segment
	data1 db 0FFh,0EEh,0DDh
	data2 db 10h,22h,36h
	ans db 4 dup(?)
dataseg ends

code segment
assume cs:code, ds:dataseg, ss:stack

start:	mov ax, dataseg
		mov ds, ax
		
		mov ah,[data1+2]
		adc ah,[data2+2]
		mov [ans+2],ah

		mov ah,[data1+1]
		adc ah,[data2+1]
		mov [ans+1],ah

		mov ah,[data1]
		adc ah,[data2]
		mov ans,ah

		mov ah, 4ch
		int 21h
code ends
		end 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也是同理

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据中心智能化运维发展研究报告(2023)解读

数据中心智能化运维发展研究报告(2023)解读 《数据中心智能化运维发展研究报告(2023)》探讨了数据中心智能化运维的概念、核心内容、实际应用和发展建议。报告指出,通过人工智能、大数据等新一代信息技术的深度应用&a…

代码随想录 -数组

1.二分算法 边界开闭 左闭右闭 原则 这里的&#xff0c;middle不是要找的值。那么nums【middle】>tager 我们要更新右边界为middle-1 &#xff08;因为要左区间 所以更新右边界&#xff09; 在这里插入图片描述 class Solution { public:int search(vector<int>&a…

探索基于订阅式的电视App:Android TV 端强大的开源视频播放器

探索基于订阅式的电视App&#xff1a;Android TV 端强大的开源视频播放器 在智能电视和流媒体日益普及的今天&#xff0c;一款强大的视频播放器是家庭娱乐的重要组成部分。正是这样一款为Android TV设计的开源视频播放器。本文将深入探讨电视盒子OSC的技术特点、使用方法以及其…

transformer 位置编码源码解读

import torch import mathdef get_positional_encoding(max_len, d_model):"""计算位置编码参数&#xff1a;max_len -- 序列的最大长度d_model -- 位置编码的维度返回&#xff1a;一个形状为 (max_len, d_model) 的位置编码张量"""positional_e…

C++ | Leetcode C++题解之第135题分发糖果

题目&#xff1a; 题解&#xff1a; class Solution { public:int candy(vector<int>& ratings) {int n ratings.size();int ret 1;int inc 1, dec 0, pre 1;for (int i 1; i < n; i) {if (ratings[i] > ratings[i - 1]) {dec 0;pre ratings[i] rati…

【JAVASE】String 的应用案例

本篇文章旨在讲解String的应用&#xff0c;下面讲解两个案例&#xff1a; &#xff08;1&#xff09;完成用户登录 &#xff08;2&#xff09;开发验证码 一&#xff1a;完成用户登录 需求&#xff1a;系统正确的登录名是&#xff1a;csdnhg12&#xff0c;密码是&#xff1a…

WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法

今天明月给大家分享一下 WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法的教程&#xff0c;在撰写【WordPress 高级缓存插件 W3 Total Cache Pro 详细配置教程】一文的时候明月就发现 W3 Total Cache 已经支持 Brotli 压缩算法了&#xff0c;可惜的是在安装完…

数字孪生概念、数字孪生技术架构、数字孪生应用场景,深度长文学习

一、数字孪生起源与发展 1.1 数字孪生产生背景 数字孪生的概念最初由Grieves教授于2003年在美国密歇根大学的产品全生命周期管理课程上提出&#xff0c;并被定义为三维模型&#xff0c;包括实体产品、虚拟产品以及二者间的连接&#xff0c;如下图所示&#xff1a; 2011年&…

【C++进阶】深入STL之 栈与队列:数据结构探索之旅

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;模拟实现list与迭代器 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀stack和queue &#x1f4…

storage存储模块-vuex持久化处理

1&#xff1a;存储登录用户信息到vuex中 在store文件夹下面&#xff0c;创建modules文件夹在文件夹下创建user.js文件 user.js文件 const state {userInfo: {userId: ,token: } } const mutations {setUserInfo (state, obj) {console.info(obj)state.userInfo.userId obj…

论文研读 A Comparison of TCP Automatic Tuning Techniques for Distributed Computing

论文《分布式计算中TCP自动调优技术的比较》由Eric Weigle和Wu-chun Feng撰写&#xff0c;探讨了自动调整TCP缓冲区大小以提升分布式应用性能的不同方法。文章首先讨论了手动优化TCP缓冲区大小的局限性&#xff0c;并介绍了研究人员提出的各种自动调优技术来应对这些挑战。 作者…

iOS调整collectionViewCell顺序

效果图 原理 就是设置collectionView调整顺序的代理方法&#xff0c;这里要注意一点 调整过代理方法之后&#xff0c;一定要修改数据源&#xff0c;否则导致错乱。 还有就是在collectionView上面添加一个长按手势&#xff0c;在长按手势的不同阶段&#xff0c;调用collectionV…

LeetCode1318或运算的最小翻转次数

题目描述 给你三个正整数 a、b 和 c。你可以对 a 和 b 的二进制表示进行位翻转操作&#xff0c;返回能够使按位或运算 a OR b c 成立的最小翻转次数。「位翻转操作」是指将一个数的二进制表示任何单个位上的 1 变成 0 或者 0 变成 1 。 解析 这一题就按位依次比较就行了。取这…

大话设计模式解读02-策略模式

本篇文章&#xff0c;来解读《大话设计模式》的第2章——策略模式。并通过Qt和C代码实现实例代码的功能。 1 策略模式 策略模式作为一种软件设计模式&#xff0c;指对象有某个行为&#xff0c;但是在不同的场景中&#xff0c;该行为有不同的实现算法。 策略模式的特点&#…

【设计模式】创建型设计模式之 工厂模式

一、介绍 工厂模式可以分为 3 个小类 简单工厂模式工厂方法模式抽象工厂模式 工厂模式的工厂类&#xff0c;并不一定以 Factory 结尾&#xff0c;例如 DataFormat、Calender 他们都是工厂类&#xff0c;通过静态方法来创建实例。 除此之外&#xff0c;创建对象的方法名称一…

利用医学Twitter进行病理图像分析的视觉-语言基础模型| 文献速递-视觉通用模型与疾病诊断

Title 题目 A visual–language foundation model for pathology image analysis using medical Twitter 利用医学Twitter进行病理图像分析的视觉-语言基础模型 01 文献速递介绍 缺乏公开可用的医学图像标注是计算研究和教育创新的一个重要障碍。同时&#xff0c;许多医生…

Linux - 信号概念 信号产生

Linux - 信号概念 & 信号产生 信号概念信号产生软件信号killraiseabortalarm 硬件信号键盘产生信号硬件中断 信号概念 信号是进程之间事件异步通知的一种方式 在Linux命令行中&#xff0c;我们可以通过ctrl c来终止一个前台运行的进程&#xff0c;其实这就是一个发送信号的…

Java面试_数据库篇_优化,事务,Mysql

Java面试_数据库篇_优化,事务,Mysql 优化如何定位慢查询方案一: 开源工具方案二: Mysql自带慢日志 如何分析慢SQL语句索引介绍索引聚簇索引和非聚簇索引&#xff0c;回表查询覆盖索引&#xff0c;超大分页优化索引创建的原则索引失效 谈谈sql优化的经验 事务事务特性隔离级别un…

vue-2 组件传值

组件关系分类 父子关系非父子关系 父子通信流程 父组件通过props将数据传递给子组件 给子组件以添加属性的方式传值子组件内部通过 props 接收模板中直接使用 props 接收的值 父组件 Parent.vue <template><div class"parent" style"border: 3px s…

力扣 T62 不同路径

题目 连接 思路 思路1 &#xff1a; BFS爆搜 class Solution { public:queue<pair<int,int>>q;int uniquePaths(int m, int n) {q.push({1,1}); // 起始位置vector<pair<int, int>> actions;actions.push_back({0, 1}); // 向下actions.push_bac…