一、计算机系统组成

  1. 计算机系统组成:由硬件系统和软件系统组成

    • 硬件系统:CPU、存储器、输入/输出设备等物理部件
    • 软件系统:操作系统、各种语言、系统软件和应用软件
  2. 汇编语言分类

    • 属于低级语言(直接面向硬件)
    • 与高级语言(面向问题)和机器语言(二进制代码)相区别

二、汇编程序开发过程

  1. 源文件扩展名

    • .ASM:汇编语言源程序
    • .OBJ:汇编后产生的目标文件
    • .EXE:链接后生成的可执行文件
  2. 开发步骤

    • 编辑(.ASM)→ 汇编(.OBJ)→ 链接(.EXE)→ 执行
  3. 相关命令

    • MASM:汇编命令,生成.OBJ和可选.LST文件
    • LINK:链接命令,生成.EXE文件

三、8086/8088 CPU结构

  1. CPU组成

    • 运算器(ALU):算术逻辑运算
    • 控制器:指令译码和执行控制
    • 寄存器组:数据暂存和地址处理
  2. 寄存器分类

    • 通用寄存器(AX,BX,CX,DX,SI,DI,BP,SP)
    • 段寄存器(CS,DS,SS,ES)
    • 控制寄存器(IP,FLAGS)
  3. 寄存器位数

    • 8位寄存器:AH,AL,BH,BL,CH,CL,DH,DL(共8个)
    • 16位寄存器:AX,BX,CX,DX,SI,DI,BP,SP,CS,DS,SS,ES,IP,FLAGS(共14个)

四、标志寄存器(PSW)

  1. 标志位组成

    • 条件状态位(6个):CF,PF,AF,ZF,SF,OF
    • 控制状态位(3个):DF,IF,TF
  2. 各标志位含义

    • CF(进位标志):无符号数溢出
    • PF(奇偶标志):结果低8位1的个数为偶数
    • AF(辅助进位):BCD运算时低4位向高4位进位
    • ZF(零标志):结果为0
    • SF(符号标志):结果为负(最高位为1)
    • OF(溢出标志):有符号数溢出
    • DF(方向标志):串操作方向(0=递增,1=递减)
    • IF(中断允许):是否允许可屏蔽中断
    • TF(陷阱标志):单步执行

五、存储器组织

  1. 存储单元编址

    • 按字节编址
    • 1字节=8位
    • 1字=2字节=16位
  2. 物理地址形成

    • 物理地址 = 段地址×16 + 偏移地址
    • 段地址左移4位(相当于×16)加偏移地址
  3. 逻辑地址与物理地址转换

    • 例:236FH:1000H → 246F0H
    • 计算方法:236F0H + 1000H = 246F0H
  4. 段寄存器使用规则

    • 默认段选择:
      • CS:代码段
      • DS:数据段
      • SS:堆栈段(BP作基址时使用)
      • ES:附加段(串操作目的地址)

六、寻址方式

  1. 寻址方式分类

    • 立即寻址:操作数在指令中
    • 寄存器寻址:操作数在寄存器
    • 存储器寻址:
      • 直接寻址:[偏移地址]
      • 寄存器间接:[BX/BP/SI/DI]
      • 寄存器相对:[BX/BP/SI/DI + 位移量]
      • 基址变址:[BX/BP + SI/DI]
      • 相对基址变址:[BX/BP + SI/DI + 位移量]
  2. 转移地址寻址

    • 段内转移:只修改IP
    • 段间转移:修改CS和IP
    • 直接寻址:目标地址在指令中
    • 间接寻址:目标地址在寄存器或内存

七、指令系统

  1. 数据传送指令

    • MOV:传送(不能直接段寄存器间传送)
    • XCHG:交换(不能与段寄存器交换)
    • PUSH/POP:堆栈操作(16位操作)
    • LEA:取有效地址
    • LDS/LES:装入远指针
  2. 算术运算指令

    • ADD/ADC:加法/带进位加
    • SUB/SBB:减法/带借位减
    • INC/DEC:加1/减1(不影响CF)
    • NEG:求补(相当于0-操作数)
    • MUL/IMUL:无/有符号乘法
    • DIV/IDIV:无/有符号除法
  3. 逻辑运算指令

    • AND/OR/XOR/NOT:与/或/异或/非
    • TEST:测试(相当于AND但不保存结果)
    • SHL/SHR:逻辑左/右移
    • SAL/SAR:算术左/右移
    • ROL/ROR:循环左/右移
    • RCL/RCR:带进位循环左/右移
  4. 串操作指令

    • MOVS/CMPS/SCAS/LODS/STOS
    • 前缀:REP/REPE/REPNE
    • 方向控制:CLD(DF=0)/STD(DF=1)
  5. 控制转移指令

    • JMP:无条件转移
    • Jcc:条件转移(JA,JB,JE,JG,JL等)
    • LOOP/LOOPE/LOOPNE:循环控制
    • CALL/RET:子程序调用/返回
    • INT/IRET:中断调用/返回
  6. 处理器控制指令

    • CLC/STC:清/置CF
    • CLD/STD:清/置DF
    • CLI/STI:清/置IF
    • HLT/NOP:暂停/空操作

八、伪指令与程序结构

  1. 伪指令类型

    • 数据定义:DB/DW/DD(字节/字/双字)
    • 符号定义:EQU/=(等值)/LABEL(类型重定义)
    • 段定义:SEGMENT/ENDS
    • 过程定义:PROC/ENDP
    • 程序结束:END
  2. 程序结构

    DATA SEGMENT; 数据定义
    DATA ENDSSTACK SEGMENT STACK; 堆栈定义
    STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK
    START:; 程序代码MOV AH,4CHINT 21H
    CODE ENDSEND START
    
  3. 变量与标号

    • 变量:存储单元符号地址,有段、偏移和类型属性
    • 标号:指令地址符号,有段、偏移和距离属性(NEAR/FAR)

九、中断与I/O

  1. 中断类型

    • 内部中断:除法错、单步、断点、溢出、指令中断
    • 外部中断:NMI(非屏蔽)、INTR(可屏蔽)
  2. 中断向量表

    • 位于内存0000:0000~0000:03FFH
    • 每个中断占4字节(CS:IP)
  3. DOS功能调用

    • 使用INT 21H
    • 常用功能:
      • 01H:键盘输入
      • 02H:显示输出
      • 09H:显示字符串
      • 4CH:程序结束
  4. I/O指令

    • IN:从端口输入
    • OUT:向端口输出
    • 端口地址:0~FFFFH

十、典型程序结构

  1. 顺序结构

    • 指令顺序执行
  2. 分支结构

    CMP AL,BL
    JA LABEL1  ; AL>BL时转移
    JB LABEL2  ; AL<BL时转移
    JE LABEL3  ; AL=BL时转移
    
  3. 循环结构

    MOV CX,10
    LOOP1:; 循环体LOOP LOOP1  ; CX=CX-1, CX≠0时循环
    
  4. 子程序结构

    ; 调用
    CALL SUB1; 定义
    SUB1 PROC NEAR/FAR; 子程序体RET
    SUB1 ENDP
    

十一、数值处理

  1. 数制转换

    • BCD码调整指令:
      • AAA/AAS:非压缩BCD加减调整
      • AAM/AAD:非压缩BCD乘除调整
      • DAA/DAS:压缩BCD加减调整
  2. 符号扩展

    • CBW:AL符号扩展到AX
    • CWD:AX符号扩展到DX:AX
  3. 算术运算注意事项

    • 乘法:8位×8位→16位,16位×16位→32位
    • 除法:被除数位数是除数两倍

十二、调试与排错

  1. DEBUG命令

    • R:查看/修改寄存器
    • D:显示内存内容
    • E:修改内存内容
    • U:反汇编
    • T/P:单步执行
    • G:连续执行
    • Q:退出
  2. 常见错误

    • 操作数类型不匹配
    • 非法寻址方式
    • 段寄存器使用不当
    • 跳转超出范围
    • 堆栈不平衡

创作不易,如果您都看到这里了,可以给我一个点赞、收藏并关注一下么?您的支持与喜爱是激励我创作的最大动力!

如果内容有误请及时联系我进行修改

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

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

相关文章

C++相比于C语言增加了哪些概念?

C相比于C语言增加了哪些概念&#xff1f; 作者将狼才鲸创建日期2025-06-17 CSDN阅读地址&#xff1a;C相比于C语言增加了哪些概念&#xff1f;Gitee源码目录&#xff1a;qemu/demo_代码示例/02_C_Class 目标受众&#xff1a;熟悉C语言&#xff0c;对C完全不了解&#xff0c;但…

HarmonyOS5 分布式测试:断网情况支付场景异常恢复验证

以下是针对HarmonyOS 5分布式事务在断网支付场景下的异常恢复验证全流程方案&#xff0c;综合关键技术与测试策略&#xff1a; 一、核心事务机制验证 ‌两阶段提交&#xff08;2PC&#xff09;协议‌ 模拟支付流程中网络中断&#xff0c;验证事务协调者能否正确处理预提交与回滚…

【狂飙AGI】第5课:前沿技术-文生图(系列1)

目录 &#xff08;一&#xff09;绘画本质&#xff08;二&#xff09;国内外AI转绘展&#xff08;三&#xff09;创作思路&#xff08;四&#xff09;美学理论&#xff08;1&#xff09;不可能美学&#xff08;2&#xff09;趋无限美学&#xff08;3&#xff09;反物理美学&…

发那科A06B-6290-H124 伺服驱动器

‌FANUC A06B-6290-H124 伺服驱动器核心性能解析‌ ‌一、核心控制能力‌ ‌多模式精密控制‌ 位置控制‌&#xff1a;支持高精度旋转角度/直线位移调节&#xff08;分辨率达脉冲级&#xff09;&#xff0c;适用于数控机床定位&#xff08;误差0.01mm级&#xff09;和机器人轨…

Spring Boot 项目启动优化

Spring Boot 项目启动优化是一个非常重要的话题&#xff0c;尤其是在微服务和云原生环境下&#xff0c;快速启动意味着更快的部署、更高效的弹性伸缩和更好的开发体验。 下面我将从分析诊断、优化策略和终极方案三个层面&#xff0c;为你提供一个全面、可操作的优化指南。 一、…

「爬取豆瓣Top250电影的中文名称」数据采集、网络爬虫

- 第 108 篇 - Date: 2025 - 06 - 16 Author: 郑龙浩&#xff08;仟墨&#xff09; 文章目录 **任务&#xff1a;爬取豆瓣Tap250电影的中文名称****代码****实现效果** 任务&#xff1a;爬取豆瓣Tap250电影的中文名称 代码 # 豆瓣前Tap 250 import requests from bs4 import…

MySQL 多表查询、事务

1.多表查询的分类 1.1 内连接 在 MySQL 中&#xff0c;内连接&#xff08;INNER JOIN&#xff09;返回的是两个表中满足连接条件的记录的交集。这个“交集”不是指整个表&#xff0c;而是指符合连接条件的行组合&#xff0c;也就是A表和B表中满足我们使用on指定条件的记录。图…

CSP-J 2020 入门级 第一轮(初赛) 答案及解析

CSP-J 2020 入门级 第一轮&#xff08;初赛&#xff09; 答案及解析 在内存储器中每个存储单元都被赋予一个唯一的序号&#xff0c;称为&#xff08;&#xff09;。 A. 地址 B. 序号 C. 下标 D. 编号 答: A 计算机中每个存储单元都是1字节&#xff0c;都有唯一的地址。 编译器…

Flutter包管理与插件开发完全指南

Flutter作为Google推出的跨平台移动应用开发框架&#xff0c;其强大的生态系统离不开完善的包管理机制和丰富的插件支持。本文将全面介绍Flutter中的包管理体系和插件开发实践&#xff0c;帮助开发者高效管理项目依赖并扩展应用功能。 一、Flutter包管理基础 1.1 包管理概述 …

【视频直播出海】阿里云ApsaraVideo Live:从零搭建全球直播平台的“星际航行”指南!

【视频直播出海】阿里云ApsaraVideo Live&#xff1a;从零搭建全球直播平台的“星际航行”指南&#xff01; 在全球化浪潮的推动下&#xff0c;视频直播行业正以前所未有的速度跨越国界&#xff0c;成为连接世界的“数字新桥梁”。对于渴望拓展海外市场的企业而言&#xff0c;…

OAuth2中的Token

两个不同的Token OAuth2 中主要有两个不同的Token, 其中的区别为是否与用户相关联, 即与用户相关的用户Token, 和与客户端相关的客户端Token, 可以通过用户Token, 查询到用户的相关信息, 客户端Token与用户无关, 一般只用于客户端认证 用户Token 获取用户Token一般有两个方式…

使用 FastMCP 实现 Word 文档与 JSON 数据互转的 Python 服务

一、项目背景 本文分享一个基于 FastMCP 框架实现的文档处理服务&#xff0c;可实现 Word 文档&#xff08;.docx&#xff09;与 JSON 数据格式的双向转换。通过此服务&#xff0c;开发者可以轻松实现文档内容提取、结构化数据填充、样式模板复用等功能&#xff0c;适用于自动…

Vue3轮播图组件,当前轮播区域有当前图和左右两边图,两边图各显示一半,支持点击跳转和手动滑动切换

功能&#xff1a; 自动循环播放&#xff08;到达末尾后回到第一张&#xff09;、可设置切换间隔时间&#xff08;interval属性&#xff09; 左右导航按钮&#xff08;可自定义显示/隐藏&#xff09; 点击底部指示器跳转到指定幻灯片、且位置可调&#xff08;轮播图内部/外部&…

350+交付案例,高质量低成本构建智慧园区数字孪生交付新范式

在智慧园区建设领域&#xff0c;数字孪生技术正成为推动园区智能化转型的核心引擎。山东融谷信息凭借其全要素、全周期、全方位的数字孪生交付能力&#xff0c;已成功交付350余个项目&#xff0c;覆盖产业园区、智慧楼宇、智慧社区等多元场景&#xff0c;低成本高质量交付&…

OpenCV 图像像素类型转换与归一化

一、知识点 1、OpenCV支持多种数据类型&#xff0c;每种类型都对应着不同的取值范围。 (1)、CV_8U取值范围[0, 255]。 (2)、CV_16U取值范围[0, 65535]。 (3)、CV_32F取值范围[0, 1]。 2、OpenCV提供convertTo()函数来转换数据类型&#xff0c;提供normalize()函数来改…

机器学习算法_支持向量机

一、支持向量机 支持向量机只能做二分类任务 SVM全称支持向量机&#xff0c;即寻找到一个超平面使样本分成两类&#xff0c;且间隔最大 硬间隔&#xff1a;如果样本线性可分&#xff0c;在所有样本分类都正确的情况下&#xff0c;寻找最大间隔&#xff1b;如果出现异常值或样…

Linux : echo ~ tail 重定向符

&#x1f680; Linux 常用命令详解&#xff1a;echo、tail 与重定向符号全解析&#xff08;含通俗案例&#xff09; &#x1f4c5; 更新时间&#xff1a;2025年6月17日 &#x1f3f7;️ 标签&#xff1a;Linux基础 | Shell命令 | echo | tail | 输出重定向 | Linux入门 文章目录…

uniapp的更新流程【安卓、IOS、热更新】

UniApp应用更新方案 两种更新方式 APP全量升级&#xff1a;需要重新下载安装包热更新&#xff1a;通过下载wgt资源包实现&#xff0c;用户只需重启应用 Android更新实现 用户需要授权安装权限&#xff0c;流程为下载APK后自动弹出安装界面 var dtask plus.downloader.cre…

火山引擎解码生态型增长铁律

“技术流量与力量的崛起&#xff0c;本质上是一场生态规模的竞赛。每次浪潮的排头兵&#xff0c;都是指尖沾着代码的开发者——互联网时代的Linux社区让开源席卷全球&#xff0c;移动互联网的App Store催生百万开发者&#xff0c;而今天&#xff0c;大模型正在用API重构产业。”…

警惕GO的重复初始化

go的初始化方式有很多种&#xff0c;在某些情况下容易引起重复初始化导致错误。 事例如下&#xff1a; 当使用gorm连接数据库时定义了全局DB var DB *gorm.DB 但是在后面某个函数内部初始化时导致DB重新初始化变成了局部变量&#xff0c;导致原来的全局变量DB还是nil func I…