王爽汇编笔记1点点

windows10中最强大汇编语言学习环境 一、前言 这是采用VMwere Workstation12 pro虚拟机软件,搭建的MS-DOS学习环境,在windowsXP/8/10及linux中均可以使用,在这个环境中,我集成了CCDOS中文系统,pdos中文系统,使用这些系统,可以进行中文输入与显示。还集成了,十分著名的汇编语言调试工具TR,它比debug更加强大。并且集成了适合汇编语言学习的微软汇编语言编译器masm5和dos... 阅读详情

本文写了自己在学习时的一些个人笔记,不会啥都记不建议看

一.基础知识

1.汇编
在这里插入图片描述操作:寄存器BX的内容送到AX里面
·汇编语言的组成
(1)汇编指令,核心
(2)伪指令,无对应机器码,由编译器执行机器不执行
(3)其他符号,由编译器识别机器不执行
2.存储
·磁盘上数据或程序被读入存储器即内存中,被CPU使用
·二进制信息可被分为指令和信息
eg
在这里插入图片描述
·存储器被划为若干存储单元,具连续性,一个存储单元是一个Byte即8个二进制位。eg.一个存储器有128个Byte
·存储器分为随机存储器和只读存储器
3.CPU对存储器读写
·CPU对内存读写,需要有:地址信息,控制信息,数据信息。CPU通过总线实现将以上3信息与存储器芯片联系
总线分为地址总线,控制总线和数据总线
·总线
地址总线 一个CPU有N根地址线,则可以说它总线宽度为N,可以寻找2^n个内存单元
数据总线 8088CPU总线宽度为8,8086CPU总线宽度为16,区别在于CPU和外界数据传送速度,8088一次只能传送1字节,而16位可传2字节.若传二字节即16位数据,8088要传2次
控制总线 控制总线宽度决定CPU对外部器件读写能力,命令是由几条控制线综合发出的
·内存存储空间受CPU寻址能力限制

二.寄存器

寄存器是CPU中程序员可以用指令读写的部件,程序员通过改变寄存器内容实现对CPU的控制
1.通用寄存器用来存放一般性数据 eg mov ax,1000H
·AX可分为AH 和AL高低位两个8位寄存器
2.汇编指令操作对象应该同位
3.关于8086CPU
·16位结构,一次性能处理,传输,暂存信息最大长度是16位的
·给出物理地址的方法:段地址*16+偏移地址。
以两个16位地址合成一个20位物理地址
在地址加法器中运行
CPU可以通过不同的段地址和偏移地址访问同一个物理地址
4.关于段
段的划分源自CPU,内存不划分段
5.段寄存器
段寄存器提供CPU要访问内存用的段地址 有CS SS DS ES
·CS 代码段寄存器 Code Segment
IP 指令指针寄存器,存放的偏移地址
CPU将CS:IP指向的内容当作指令执行(区分指令与数据
8086cpu工作可描述为
在这里插入图片描述
修改CS IP指令用jmp指令,不能用mov
jmp 新CS:新IP
若只想修改IP 用jmp 寄存器
jmp ax = jmp ip,ax
4.debug 使用

r查看改变寄存器内容
d查看内存内容
e改写内存内容
u看汇编指令
t执行1步指令
a写汇编指令

三.寄存器(内存访问)

1.DS data string
存放访问数据的段地址
·可用mov指令将内存单元内容送入寄存器中
·[…]表示一个内存单元,其中的内容代表偏移地址,此时内存单元段地址为ds中的数据
·8086CPU不支持将数据直接送入段寄存器
2.栈
入栈和出栈:先进后出和后进先出LIFO
·CPU命令 push和pop(pop ax 表示从栈顶取出数据送入ax
·SS SP SS存放段地址,SP存偏移地址
·push的执行在这里插入图片描述pop的执行
在这里插入图片描述

·栈顶超界问题
在这里插入图片描述
在这里插入图片描述

四.第一个程序

编译过程
在这里插入图片描述
操作系统外壳
在这里插入图片描述
edit masm link debug操作略

第五章 [BX]和 loop 指令

一. [bx]和内存单元的描述
[bx]:偏移地址在bx里面,段地址默认在ds里面,表示一个内存单元
二.loop
1.两步操作①(cx)=(cx)-1;
②判断cx中的值,不为0则转至标识的地址处执行,如果cx为0则退出循环。
2. mov cx,n
s:expression
loop s
3.g IP1 将debug 从当前的CS:IP指向的指令执行,一直执行到(IP)=IP1为止
p直接一次执行完
3. 对于mov ax,[idata],debug 将其解释为mov ax,ds:[idata],而masm 将其解释为mov ax,idata
4. 改变[idata]的段地址用段前缀在这里插入代码片
三.描述符号()
四.idata表示常量

第六章 包含多个段的程序

一.在代码段中使用数据
1.assume cs:code
code segment
dw(b) …

code ends
end
2.dw define word
db define byte
二.在代码段使用栈

第七章 更灵活的定位内存地址的方法

一.and or
and 按位进行与运算
or 按位进行或运算
二.ASCII
在这里插入图片描述三.以字符形式给出的数据
在这里插入图片描述
四.大小写转化问题

在这里插入图片描述
所以用and指令即可
and al,11011111B
五.[bx+idata]
段地址ds,偏移地址(bx)+idata
mov ax,[bx+idata] 数字化描述(ax) = ((ds)*16+(bx)+idata)
六.用[bx+idata]的方式数组处理
在这里插入图片描述
七.[bx+si\di] [bx+si\di+idata]
[bx+si\di+idata]还可表示为idata[bx][si\di]
八.多做实验总结

第八章 数据处理的两个基本问题

reg sreg
一.bx,si,di,bp
8086CPU中只有这四个寄存器可以在[…]进行内存单元的寻址,他们要么单独出现,要么只能以 bx和si,bx和di,bp和di,bp和si四种组合出现,而且[bp]对应的段地址默认在ss里
二.机器指令处理的数据在三个地方:cpu内部,内存,端口
三.寻址方式
在这里插入图片描述

四.指令要处理的数据有多长
用寄存器指明或用X(word\byte) ptr指明
eg.1.mov word ptr ds:[0],1
inc word ptr [bx]
inc word ptr ds:[0]
add word ptr [bx],2
其他:push指令默认字操作
五.寻址方式综合运用
mov ax, seg
mov ds, ax
mov bx, 60h ;确定记录地址,ds:bx

mov word ptr [bx+0ch], 38 ;排名字段改为38 [bx].0ch
add word ptr [bx+0eh], 70 ;收入字段增加70 [bx].0eh
mov si, 0 ;用si来定位产品字符串中的字符
mov byte ptr [bx+10h+si], ‘V’ ;[bx].10h[si]
inc si
mov byte ptr [bx+10h+si], ‘A’
inc si
mov byte ptr [bx+10h+si], ‘X’
六.指令
1.div
在这里插入图片描述
2.dd伪指令dd double word
3.dup 用来进行数据重复
db 3 dup (…)

第九章 转移指令的原理

一.操作符
1.offset 取得标号偏移地址
mov ax,offset start 相当于 mov ax,0(start是代码端第一条指令)
2.jmp 可以只修改IP,也可以同时修改CS和IP
·根据位移进行转移的jmp指令
·jmp short 标号
转到标号处执行指令
段内短转移 -128~127
指令结束后CS:IP指向标号
根据机器码后的数字作为偏移位移
·jmp 16位 reg 功能:(IP)= (16位reg)
转移地址在内存中的jmp指令:1.jmp word ptr 内存地址单元(段内转移)
2.jmp dword ptr 内存单元地址(段间转移) 内存地址单元存两字
(cs)=(内存单元地址+2) (IP)=(内存单元地址)
3.jcxz指令 短转移
jcxz 标号 if(cx)==0)jmp short 标号
4.loop 短转移
操作(1)(cx)=(cx)-1;(2)如果(cx)≠0,(IP)=(IP)+8位位移

第十章 CALL 和RET 指令

1.ret 和retf
·ret(f)使用栈中数据,修改IP(和CS)内容,实现近(远)转移
2.call 操作:将IP或IP和CS压入栈中再转移
依据位移进行转移 call 标号 16位位移要求
·转移目的地地址在指令中的call指令 call far ptr 标号 实现段间转移,改变CS IP 至标号所在
·call 16位·reg
push IP
jmp 16位reg
·转移地址在内存单元
call (d)word ptr 内存单元地址
3.mul
在这里插入图片描述4.寄存器冲突问题:子程序使用的寄存器,很可能在主程序中也要使用
解决方案:寄存器里的内容保存再恢复,用栈

标志寄存器

1.flag
在这里插入图片描述
zf 记录指令结束后结果是否为0,为0zf不为0,不为0zf为
pf 奇偶标志位,1的个数为偶数pf=1,为奇数pf=0
sf 记录相关指令是否为负 为负sf=1,非负sf=0
cf 记录借(进)位值 无符号数
of
溢出
of 记录有符号运算的结果是否发生溢出,若有溢出,of=1,若没有溢出,of=0
2.abc 带进位加法指令
·格式:abc 操作对象1,操作对象2
·功能:操作对象1=操作对象1+操作对象2+(CF)
3.sbb
在这里插入图片描述
4.cmp指令
比较减法指令,不保存结果,仅对标志寄存器产生影响
5.检测比较结果的条件转移指令
在这里插入图片描述6.pushf和popf
将标志寄存器压栈
从栈中弹出数据送标志寄存器中
7.
在这里插入图片描述

第十二章 内终端

贴3张一个的大佬的图
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述处理中断程序和iret指令
中断向量表

第十三章 int 指令

相当于引发n号中断过程
在这里插入图片描述
二.bios
在这里插入图片描述安装过程

在这里插入图片描述

汇编语言》(第四版) 课程设计1 本文是老师《汇编语言》(第四版) 课程设计1 “将实验七中给定的公司数据显示在屏幕上”的分析及代码。这是目前写的最综合的程序。 阅读详情

相关推荐

汇编语言》课程设计1

实验结果 代码如下 assume cs:code data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','199

5262yz的博客 1万+

汇编语言(老师)

自学完老师的汇编语言,对一些关键知识点进行梳理。 目录 第一章 基础知识 第二章 寄存器 第三章 寄存器(内存访问) 第4章 第一个程序 第5章 [BX]和loop指令 第6章 包含多个段的程序 第7章 更灵活的定位内存地址的方法 第8章 数据处理的两个基本问题 第9章 转移指令的原理 第10章 CALL和RET指令 第11章 标志寄存器 第12章 内中断 第13章...

heart_in_someone的博客 9979

汇编语言答案(版)

 汇编语言答案(本答案是自己做的 所有题目已在deubg中调试;但难免有差错,发现的提醒我 email:maokaijiang1211@163.com  谢谢)第一章检测点1.1113(2) 1024,0,1023(3) 8192,1024(4) 2^30,2^20,2^10(5) 64,1,16,4(6) 1,1,2,2,4(7) 512,256

maokaijiang的专栏 1万+

汇编语言-- 检测点解答

一:前言这篇blog记录我阅读汇编语言()的心得,每单元的检测点解答。二:第一章:基础知识总线bus:分为数据总线,控制总线,地址总线地址总线的宽度决定了CPU能对多少内存单元进行寻址(寻址能力)数据总线:决定了CPU和外界的数据传送速度控制总线:决定了CPU对外部器件的控制能力内存:内存是对各种芯片(显卡,网卡,随机存储器)的RAM和ROM的物理地址编址,即物理地址对虚拟地址的一一映射。这样...

peanWang的博客 3062

汇编语言》笔记(详细)

一、基础知识 1、指令 机器指令:CPU能直接识别并执行的二进制编码(指令) 汇编指令:是机器指令便于记忆的书写格式。汇编指令是机器指令的助记符,同机器指令一一对应。 指令:指令通常由操作码和地址码(操作数)两部分组成 指令集:每种CPU都有自己的汇编指令集。 汇编语言发展至今,有以下3类指令组成。 汇编指令:机器码的助记符,有对应的机器码。 伪指令:没有对应的机器码,由编译器执行,计算机并不执...

洋葱汪的博客 16万+

汇编语言》第四版-实验7

title: 汇编语言》(第四版) 实验7 tags: [] id: ‘258’ categories: 学习 learn 汇编学习 date: 2020-10-19 17:38:48 这个实验确实是比较繁琐,而且我先是手写的代码,有很多考虑错误的地方,最后话了2个多小时才解决掉。 ;迄今为止最麻烦的程序 assume cs:code,es:table,ss:stack data segment db '1975','1976','1977','1978','1979.

qq_31409563的博客 4474

跟我学汇编(二)汇编环境搭建

这一次我们来讲解一下如何在window上搭建一个教材中所用的汇编环境。的书中用的是8086CPU,现在的CPU肯定是不一样啦,所以我们使用虚拟机来模拟一下。一、下载系统我们采用MS-DOS7.10系统,这里我提供一个免费的下载地址http://download.csdn.net/detail/xingjiarong/9428514,上次我看到了一个哥们的环境搭建过程,搭建好系统下载竟然要5个

xingjiarong的专栏 7683

智慧场馆解决方案小程序开发实战指南与经验分享

建议采用消息队列(如RabbitMQ)进行异步解耦,支付回调成功后发送“订单成功”消息,退款请求发送“释放场地”消息,消费者更新场地状态并记录操作日志,便于问题回溯。同时,为了防止“抢单”造成库存超卖,推荐使用。线下核销通过场馆PAD或手机管理端扫描用户小程序中的动态,内容可以是一次性token,有效时间60秒,核销后立即失效,有效防止截图复用。在体育场馆、健身中心、综合园区等场景中,传统的人工登记、预约、现场缴费等管理模式效率低、数据割裂,已经无法满足用户对便捷体验和场馆对精细化运营的需求。

zww8949111的博客 211

港股十档行情tick数据包含逐笔成交与委托挂单信息 每笔记录含时间戳、最新价、成交量、成交额,以及买一到买十、卖一到卖十的价格和挂单量

港股十档行情tick数据包含逐笔成交与委托挂单信息。每笔记录含时间戳、最新价、成交量、成交额,以及买一到买十、卖一到卖十的价格和挂单量。逐笔数据单独记录每笔成交明细,含成交时间、价格、成交量、买卖方向。分钟数据提供开盘、最高、最低、收盘价及成交量、成交额,按分钟汇总。历史跨度覆盖近十五年,以csv表格形式提供。 数据源:CMES金融数据库

Python RegNet CIFAR-10图像分类 混淆矩阵

Python RegNet CIFAR-10图像分类 混淆矩阵 RegNet-Y-400MF 在 CIFAR-10 上训练十类分类,输出混淆矩阵、准确率曲线与 history.csv,数据自动下载。 功能: · CIFAR-10 十类 · RegNet-Y-400MF · 混淆矩阵 · 准确率曲线 · 自动下载数据 · 打包时预跑 output/preview 压缩包含可运行源码、依赖与说明,按 README 安装后即可复现。

STM32F4 UVC Camera

打开链接下载源码: https://pan.quark.cn/s/7cb598ca9ffd 通过STM32F4与USB摄像头建立连接,依据UVC标准,采集由摄像头传输的MJPEG或nv12格式的视频流信息,同时利用UVC标准对摄像头的亮度、对比度、色彩饱和度、色调、清晰度、伽玛值、增益、白平衡、逆光补偿以及曝光程度进行调节控制。

基于分布式模型预测控制的多个固定翼无人机一致性控制(Matlab代码实现)​

内容概要:本文系统研究了基于分布式模型预测控制(DMPC)的多个固定翼无人机一致性控制问题,提出并实现了相应的Matlab仿真方案。通过建立固定翼无人机精确的动力学模型,结合分布式控制架构,采用模型预测控制策略,使多个无人机在无中央协调的情况下实现状态一致性,如位置、速度和航向的协同收敛。文中详尽阐述了系统建模、控制算法设计、一致性协议构建及Matlab代码实现过程,重点解决了通信延迟、局部信息交互受限以及动态环境适应性等关键技术难点,并通过大量仿真实验验证了该方法的有效性、鲁棒性与可扩展性。; 适合人群:具备一定现代控制理论基础和Matlab编程能力,从事自动化、航空航天、机器人学、集群智能或智能系统等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多无人机协同飞行、编队控制、集群作业与自主导航等实际场景;②服务于高校科研项目、课程设计、学位论文研究及工程原型开发,旨在深入掌握分布式控制与模型预测控制的融合机制与工程实现;③帮助读者复现已有算法成果,并为进一步研究复杂通信拓扑、障碍规避与任务分配等高级功能提供坚实基础。; 阅读建议:建议读者结合Matlab代码与文中的理论推导同步学习,动手搭建仿真模型,重点关注状态一致性收敛过程、代价函数设计与控制参数调优策略,同时可尝试拓展至不同初始条件、通信拓扑结构及外部干扰场景下的性能测试与分析。

Java+Swing+Mysql学生成绩管理系统

代码下载链接: https://pan.quark.cn/s/a4b39357ea24 lyyzoo-ssms 学生成绩管理系统/学生信息管理系统 博客园地址:http://www.cnblogs.com/chiangchou/p/project-ssms.html

【创新、复现】基于蜣螂优化算法的无线传感器网络覆盖优化研究(Matlab代码实现)

内容概要:本文围绕基于蜣螂优化算法(DBO)的无线传感器网络(WSN)覆盖优化问题展开研究,旨在通过智能优化算法提升网络覆盖率与资源利用效率。研究采用Matlab进行算法实现,通过对传感器节点的部署位置进行全局寻优,最大化监测区域的覆盖范围并减少覆盖盲区。文中系统阐述了蜣螂优化算法的原理、WSN覆盖模型的构建、适应度函数的设计及仿真流程,并通过对比实验验证了DBO算法在收敛速度、优化精度和稳定性方面相较于传统优化方法的优越性。研究不仅提供了完整的代码实现,还探讨了算法在物联网、环境监测等实际场景中的应用潜力,突出了智能优化技术在解决复杂工程问题中的价值。; 适合人群:具备一定编程基础,熟悉Matlab编程环境,从事无线传感器网络、智能优化算法、物联网应用或相关领域研究的科研人员、工程技术人员及研究生。; 使用场景及目标:①解决无线传感器网络中节点部署导致的覆盖不均与资源浪费问题;②提升复杂环境下WSN的监测覆盖率与系统稳定性;③为智能优化算法在通信网络布局、环境监控、智慧农业等领域的工程应用提供可复现的技术范例; 阅读建议:建议结合提供的Matlab代码进行仿真实验,深入理解蜣螂优化算法的参数设置、迭代机制与收敛特性,同时可尝试将其迁移应用于其他组合优化问题如路径规划、任务调度或多目标优化中,以拓展算法的应用边界。

单片机设计文档DOC工程师应该掌握的20个模拟电路原理及其电路图

单片机设计文档DOC工程师应该掌握的20个模拟电路原理及其电路图

基于SpringBoot的校园创客空间管理系统的设计与实现【附源码+数据库+万字论文+PPT+包部署+录制讲解视频】.zip

标题基于SpringBoot的校园创客空间管理系统设计与实现AI更换标题第1章引言介绍校园创客空间管理系统的研究背景、意义、国内外研究现状、论文方法与创新点。1.1研究背景与意义阐述校园创客空间的发展现状及其对管理系统的需求。1.2国内外研究现状分析国内外校园创客空间管理系统的研究进展。1.3研究方法及创新点概述本文采用的研究方法及系统设计的创新点。第2章相关理论总结SpringBoot框架及相关技术,确立系统设计的理论基础。2.1SpringBoot框架概述介绍SpringBoot框架的特点、优势及在Web开发中的应用。2.2相关技术总结概述数据库技术、前端技术及系统安全技术等。2.3理论基础确立基于上述理论,确立校园创客空间管理系统的设计基础。第3章系统需求分析详细分析校园创客空间管理系统的功能需求、性能需求及用户需求。3.1功能需求分析列举系统应具备的核心功能,如用户管理、项目管理等。3.2性能需求分析分析系统对响应时间、并发处理能力等性能指标的要求。3.3用户需求分析从用户角度出发,分析用户对系统的期望和需求。第4章系统设计详细介绍系统的架构设计、数据库设计及界面设计。4.1系统架构设计给出系统的整体架构,包括前后端分离、微服务架构等。4.2数据库设计设计系统的数据库结构,包括表结构、索引及关系等。4.3界面设计展示系统的用户界面设计,包括页面布局、交互设计等。第5章系统实现与测试阐述系统的实现过程,包括编码实现、系统集成及测试验证。5.1编码实现介绍系统各模块的编码实现过程及关键技术点。5.2系统集成系统各模块之间的集成方式及集成测试过程。5.3测试验证通过单元测试、集成测试等方法验证系统的功能和性能。第6章结论与展望总结系统设计与实现的主要成果,提出未来研究方向。6.1研究结论概括系统设计与实现的主要成果,包括功能实现、性能优化等。6.2展望指出系统存在的不足及

TECHNIC_.rar

当 CAD 缺失对应字体时,图纸文字会显示异常,出现乱码、问号。将下载好的字体文件复制到 AutoCAD 的 Fonts 文件夹中,即可恢复正常显示。

上一篇: buu pwn入门 有栈溢出
下一篇: 王爽汇编实验7
Sanntaa
博客等级 码龄4年 91粉丝 · 5原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值