《汇编语言》第3版 (王爽)检测点3.1解析

第三章 检测点3.1


(1).在Debug中,用“d 0:0 1f”查看内存,结果如下。
在这里插入图片描述
下面的程序执行前,AX = 0,BX = 0,写出每条汇编指令执行完后相关寄存器中的值。

mov ax,1  ;1放入AX寄存器中,此时AX寄存器中的值为1
mov ds,ax ;将AX寄存器中的值放入DS寄存器中,此时DS寄存器中的值为1
mov ax,[0000]    AX = 2662  ;此时的内存单元地址为 DS*16+0=00010H,即将2662放入AX寄存器中
mov bx,[0001]    BX = E626  ;将内存单元地址为00011H的数据放入BX寄存器中,即为E626
mvo ax,bx        AX = E626  ;将BX寄存器中的数据放入AX寄存器中
mov ax,[0000]    AX = 2662  ;和第三条指令相同
mov bx,[0002]    BX = D6E6  ;将内存单元00012H的数据放入BX寄存器中
add ax,bx        AX = FD48  ;将BX寄存器中的数据和AX寄存器中的数据相加后存入AX中,即 D6E6 + 2662 = FD48
add ax,[0004]    AX = 2C14  ;将内存单元00014H中的数据和AX寄存器中的数据相加后放入AX中,即 FD48 + 2ECC = 12C14,注意此时数据已经超出AX寄存器所能存放的范围,所以只保留低16位
mov ax,0         AX = 0    ;0放入AX寄存器中
mov al,[0002]    AX = 00E6 ;将内存单元00012H中的数据放入AX寄存器的低八位中,由于操作的是低八位寄存器,所以此时按字节存放,即E6
mov bx,0         BX = 0    ;0放入BX寄存器中
mov bl,[000C]    BX = 0026 ;将内存单元0001CH中的数据放入BX寄存器的低八位
add al,bl        AX = 000C ;将BX寄存器低八位中的数据和AX寄存器低八位中的数据相加后放入AX寄存器中的低八位,即 E6 + 26 = 10C,注意此时数据已超过AL的范围,所以只保留低8

(2).内存中的情况如图3.6所示
在这里插入图片描述

各寄存器的初始值:CS = 2000H,IP = 0,DS = 1000H,AX = 0,BX = 0;
①写出CPU执行的指令序列(用汇编指令写出)
②写出CPU执行每条指令后,CS、IP和相关寄存器中的数值
③再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?

mov ax,6622H   ;AX = 6622H  CS = 2000H  IP = 0003H 将6622放入AX寄存器中,这条指令为3个字节,所以CS不变,IP+3
jmp 0ff0:0100  ;CS = 0FF0H  IP = 0100H 这是一条跳转语句,跳转到CS=0FF0,IP=0100的地址
mov ax,2000H   ;AX = 2000H  CS = 0FF0H  IP = 0103H 将2000放入AX寄存器中,这条指令为3个字节,所以CS不变,IP+3
mov ds,ax      ;AX = 2000H  DS = 2000H  CS = 0FF0H  IP = 0105H 将AX寄存器中的内容放入DS中,这条指令为3个字节,所以CS不变,IP+3
mov ax,[0008]  ;AX = C389H  CS = 0FF0H  IP = 0108H 将内存单元为20008中的数据放入AX寄存器中,我们从图3.6可以看到内存单元地址为20008中存放的是89 C3,所以此时AX寄存器中的值为C389,注意此时是用DS+[xxxx]从某内存单元中取数据
mov ax,[0002]  ;AX = EA66H  CS = 0FF0H  IP = 010BH 将内存单元为20002中的数据放人AX寄存器中

具体调试过程如下图:
在这里插入图片描述
在这里插入图片描述
通过上述过程,我们可以知道使用CS和IP读取的是指令,而是用DS和[xxxx]读取的是数据。

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

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

相关文章

GC如何判定对象已死

GC判定对象已死的2种方法 引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;Java语言中没有选用引用计数算法来管理内存,其中最主要的原因是它很…

【零基础SRC】成为漏洞赏金猎人的第一课:加入玲珑安全漏洞挖掘班。

我们是谁 你是否对漏洞挖掘充满好奇?零基础或有基础但想更进一步?想赚取可观的漏洞赏金让自己有更大的自由度? 那么,不妨了解下我们《玲珑安全团队》。 玲珑安全团队,拥有多名实力讲师,均就职于互联网头…

一线互联网大厂中高级Android面试真题收录,记一次字节跳动Android社招面试

在开始回答前,先简单概括性地说说Linux现有的所有进程间IPC方式: 1. **管道:**在创建时分配一个page大小的内存,缓存区大小比较有限; 2. 消息队列:信息复制两次,额外的CPU消耗;不合…

指针与malloc动态内存申请,堆和栈的差异

定义了两个函数print_stack()和print_malloc(),分别演示了两种不同的内存分配方式:栈内存和堆内存。然后在main()函数中调用这两个函数,并将它们返回的指针打印出来。 由于print_stack()中的数组c是在栈上分配的,当函数返回后&…

【哈希表算法题记录】242.有效的字母异位词

题目链接 这题思路比较简单,考虑到26个小写字母的ASCII是连续的,那么我们可以设置一个size为26的哈希表record,然后记录26个字母分别在string中出现的次数。例如,record[0]记录的是字母‘a’出现的次数。于是我们主要就是要获得每…

Python装饰器的使用详解

目录 1、函数装饰器 1.1、闭包函数 1.2、装饰器语法 1.3、装饰带参数的函数 1.4、被装饰函数的身份问题 1.4.1、解决被装饰函数的身份问题 1.5、装饰器本身携带/传参数 1.6、嵌套多个装饰器 2、类装饰器 装饰器顾名思义作为一个装饰的作用,本身不改变被装…

Acwing 周赛135 解题报告 | 珂学家 | 反悔堆贪心

前言 整体评价 VP了这场比赛, T3挺有意思的,反悔贪心其实蛮套路的。 A. 买苹果 思路: 签到 n, x list(map(int, input().split())) print (n // x)B. 牛群 思路: 分类讨论 from collections import Counters input() cnt Counter(s)lists sorte…

WPF 【十月的寒流】学习笔记(2):MVVM中是怎么实现通知的

文章目录 前言相关链接代码仓库项目配置代码初始代码ViewPersonViewModel 尝试老办法通知解决方案ObservableCollectionBindingListICollectionView 总结 前言 我们这次详细了解一下列表通知的底层是怎么实现的 相关链接 十月的寒流 MVVM实战技巧之:可被观测的集合…

2024年【A特种设备相关管理(电梯)】考试总结及A特种设备相关管理(电梯)证考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年A特种设备相关管理(电梯)考试总结为正在备考A特种设备相关管理(电梯)操作证的学员准备的理论考试专题,每个月更新的A特种设备相关管理(电梯…

KVM部署Windriver Linux操作系统

安装前准备 创建密码配置文件&#xff0c;否则虚机启动后无法登录 cd /var/lib/libvirt/images/disks/windriver/ docker run -ti --rm quay.io/coreos/mkpasswd --methodyescrypt 123456 >password_hash.txt cat <<-ENDOF> sample.bu variant: fcos version: 1.4…

面试 Java 基础八股文十问十答第十二期

面试 Java 基础八股文十问十答第十二期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;创建一个对象用什么关…

代码随想录day27:贪心part1,基础篇

文章目录 day27&#xff1a;贪心part1&#xff0c;基础篇455.分发饼干376.摆动序列53.最大子数组和 day27&#xff1a;贪心part1&#xff0c;基础篇 455.分发饼干 循环结束条件注意饼干比孩子多的情况 class Solution {public int findContentChildren(int[] g, int[] s) {A…

C++:非静态成员默认初始化

C11之前只有常静态成员变量才能进行默认初始化&#xff0c;其它变量初始化时总要进行繁琐的过程 class A{int a; public:A():a(10){} };C11开始支持非静态成员的默认初始化&#xff0c;默认初始化和初始化参数列表同时初始化一个变量时会使用初始化参数列表&#xff0c;不进行…

JavaScript new、apply call 方法

new、apply、call、bind JavaScript 中的 apply、call和 bind 方法是前端代码开发中相当重要的概念&#xff0c;并且与 this 的指向密切相关 new new 关键词的主要作用 就是执行一个构造函数、返回一个实例对象 根据构造函数的情况&#xff0c;来确定是否可以接受参数的传递…

Huggingface初上手即ERNIE-gram句子相似性实战

大模型如火如荼的今天&#xff0c;不学点语言模型&#xff08;LM&#xff09;相关的技术实在是说不过去了。只不过由于过往项目用到LM较少&#xff0c;所以学习也主要停留在直面——动眼不动手的水平。Huggingface&#xff08;HF&#xff09;也是现在搞LM离不开的工具了。 出于…

最新 DataGrip 2023.3.4 下载安装激活 + 永久免费

文章目录 DataGrip简介同类产品对比使用技巧不足实战 下载安装激活Stage 1 : 官网下载Stage 2 : 下载工具Stage 3-1 : windows为例Stage 3-2 : mac为例常见问题部分小伙伴 Mac 系统执行脚本遇到如下错误&#xff1a;解决方法&#xff1a; 执行脚本做了啥&#xff1f;和收费版区…

基于springboot+vue的可盈保险合同管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

XUbuntu22.04之如何找到.so库所在的软件包?(二百一十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Vue中的事件总线(EventBus)是什么?它有什么优点和缺点?

作为一名使用Vue的前端开发者&#xff0c;有时候会听到事件总线(EventBus)这个名词。但可能是我入行比较晚&#xff0c;我在Vue网站中并没有看到过事件总线的介绍&#xff0c;在项目中也没有使用过。那究竟什么是事件总线&#xff1f;事件总线可以解决什么问题&#xff1f; 事…

element-plus表格合并

要实现这样的表格&#xff0c; 怎么做呢&#xff1f; 甚至是这种三级的呢&#xff1f; 官网的案例也是通过这个方法进行配置的&#xff0c;也就是说表格长什么样&#xff0c;关键在怎么处理的方法上。 这是官网的方法&#xff0c;可参考拓展&#xff1a; const arraySpanMeth…