汇编语言程序设计学习笔记

news/2024/9/25 1:13:26/文章来源:https://www.cnblogs.com/rpup/p/18430384

汇编语言程序设计学习笔记

参考书目:汇编语言第四版 王爽

2.1 通用寄存器

8086cpu寄存器共有14个,分别是AX BX CX DX SI DI SP BP CS SS DS ES PSW

每个寄存器都是16位的,可以存储16个bit

其中AX BX CX DX为通用寄存器,存储一些一般的数据,为了兼容基于上一代的cpu的汇编

程序,这四个寄存器都分别可以被分为两个8位寄存器去操作,AX变成AL AH 其中AL占据原

AX的0到7 剩下的位AH,BX也可分为BL,BH,其他通用寄存器也相同

2,2 字在寄存器中的存储

8086 cpu 可以一次性处理两种尺寸的数据

1 字节:byte 就是一个字节,可以存在八位寄存器中

2 字:word 一个字由两个字节构成,这两个字节分为高位字节和低位字节

一个字可以存储在一个16位寄存器中,其中AL存储了低位字节,AH存储了高位字节

应为cpu可以存储和处理的数据最低单位为byte,用16表示更为直观,所以我们一般采用16

进制去表示

2.3 几条汇编指令

常见的汇编指令有mov add

mov用于将数据存入寄存器比如:

mov ax,18 就是将18存入寄存器ax

mov ax,bx就是将bx寄存器的数据送入寄存器AX

add用于在原有的寄存器数据上叠加

add ax,18用于将18加到ax寄存器的原数据中

add ax,bx 用于将bx寄存器的内容加到ax寄存器的数据中

我们需要主义的是寄存器的位数有限,要是叠加后的结果超过其范围,超出范围的位会溢

出,没有超出的部分会被留下,但溢出的这部分并不是真正的被丢弃,以后会涉及相关的内

容 ,在我们对寄存器进行操作时,如果直接去操作al寄存器,此时cpu将其看作一个独立的

寄存器,认为其和ax,ah寄存器没有直接关系,所以即使在al中发生了进位,也不会将进位

部分存入ah,如果我们直接对ax进行操作,即使超过低位寄存器的范围,超出的部分也会

进入高位寄存器中,因为在cpu在执行指令时只认为有一个16为寄存器ax

注意: 在进行数据传送或者运算时,需要注意两个操作对象的位数应该一致,否则就是错

误的指令

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

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

相关文章

924 pwn学习

9/24 pwn学习 知道了一次完整的pwn攻击流程,现在我们正式开始学习pwn基础知识 —————————pwn方向以 难入门 难提升著称 基础知识-C语言学习-1 由于pwn要求c语言必须掌握,所以我们先进行一段时间的的C语言学习 学习视频:浙江大学翁恺教你C语言程序设计!C语言基础入门…

Raft总结

Raft算法State所有server都有的持久化状态 先存储,然后响应RPCcurrentTerm 当前任期,初始为0,单调递增votedFor 当前任期投票给谁了,没有就是nulllog[] 日志条目,每个条目都包含命令、Leader收到条目时的任期,第一个条目的index为1所有server都有的Volatile statecommitI…

Lab3 Raft

Lab3 Raft 1.Getting Started 代码位置:基础框架代码位置:src/raft/raft.go测试代码:src/raft/test_test.go建议测试时使用-race 2.The code向raft/raft.go添加代码来实现Raft。实现必须支持以下接口 // 创建一个Raft Server rf := Make(peers, me, persister, applyCh) fun…

Lab3 记录

Part 3A: leader election 1.选举主要流程新服务器加入集群服务器在启动时状态是Follower。只要持续接收到Leader或Candidate的心跳信息,就继续保持Follower状态。开始选举每个Server都有一个随机的选举超时时间,选举超时在一个固定区间内随机选择(例如,150-300毫秒) 如果…

软件工程课程第三次作业

软件工程 https://edu.cnblogs.com/campus/fzu/SE2024作业要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261作业目标 分析学生们的需求,设计一个app原型解决他们的问题学号 072208130合作伙伴 052205144张诗悦使用figma设计原型,原型链接:https://www.figma.…

大文件去重

若文件存的字符如下图,要求进行去重可将数据存入HashSet,如下,但如果文件很大,大于虚拟机内存的话,会报异常java.lang.OutOfMemoryError: Java heap spaceHashSet set = new HashSet();File file = new File("E:\\aa.txt");BufferedReader reader = new Buffere…

9月13日关于数组存储数据

在题目中要求建立数组来存储项目信息,储存的内容包括String、int、boolean、double等各种不同类型,刚开始我还处于建立普通数组要不是int【】要不是string【】,越琢磨越不对劲这样并不能存储不同类型的数据,但是数据又需要统一存取,网上又没有这么简单的讲解,也是被这个简…

9.24日总结

今日上学配置了Node.JS的环境变量,并应用VScode进行JavaScript的相关学习应用 其中

9月11日toString重载方法的使用

在编辑过程中我经常会写一部分调试一部分,至少知道哪里有错能够及时改正,在编写时发现studentManger中的打印出来的是地址,而不是自己想要的内容,经过查询是需要写toString来重载输出利用这样的方法,一是可以正常打印出自己想要的内容,而是可以根据一个参数打印出所有的信…

软件工程作业——结对项目

这个作业属于哪个课程 22级计科12班这个作业要求在哪 作业要求这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序成员姓名 学号 GitHub地址吕宏鸿 3122004446 结对项目宋观瑞 3122004402 结对项目1.PSP表格PSP2.1 预估耗时(分钟) 实际耗时(分钟)计划 10 5* 估计…

9月10日循环条件的结束

在测试编程中涉及到输入错误要重新返回UI界面,但是我写的总是输入不管是对还是错都会直接结束程序,完全不符合要求,经过整理思路,查询代码结构,此处应该设计为双层循环外部为while,内部为witch case语句,当输入为1时执行case==1;经应该是执行生产计划类然后跳出witch条…

IDEA更改远程git仓库地址

前言 我们在使用IDEA开发时,一般会配置好对应的git仓库,这样就比较容易对代码进行控制以及协同开发。但有时候,我们远程的仓库地址由于这样那样的原因,需要迁移(这在爱折腾的企业是常有的事情)。那么,我们该如何在IDEA中更新远程仓库地址呢? 如何设置 首先,我们点击上…