8086编程模型

汇编程序8086 (带流程图) 8086汇编编程练习1 本程序为课设限时答辩时所写,可以达到要求但过程较为繁琐,如果有错误或疑问请直接在评论中提出~ 连续输入三个字母(不限大小写),将三个字母的ASCII码相加后将所得的十六进制数结果以ASCII码的形式显示到屏幕上 data segment BUFF DB 200 DB 0 DB 200DUP(0) XLE0 DB 0 XLE1 DB 0 XLE2 DB 0 VAL1 DB 0 VAL2 DB 0 ENDD DB 'THE END$' C 阅读详情

概括:Intel的芯片具有良好的兼容性,8086和80386是两个典型的代表,以下介绍8086的编程模型。

一、寄存器

寄存器是对CPU硬件的抽象,指令系统是CPU功能的抽象。

1.1、以下是CPU寄存器组结构图:

1.2、寄存器概述

不同的寄存器配合不同的指令来完成各种操作,所有的寄存器都是16位,其中AX,BX,CX,DX的高低8位可以单独访问。

AX,BX,CX,DX是数据寄存器,CS,DS,SS,ES是段寄存器,IP是指令指针寄存器,SP,BP,SI,DI是数据指针寄存器,FLAG 是运算结果标志寄存器。

二、存储器接口

8086只能工作在实模式下,也就是不提供虚拟地址的机制,有20根地址线,所以能访问的地址范围是1M,而寄存器是16位,无法直接寻址1M的地址范围,所以用两个寄存器来访问,具体的方法如下:

2.1、把1M的空间分成段,每段的粒度是16字节,每段最大为64KB。

2.2、这样就可以通过CS,DS,SS,ES来存储段号,而用SP,BP等来存储偏移,就可以达到寻址1MB空间的目的。

2.3、为什么粒度必须是16字节?

     因为如果粒度小于16字节的话,段号就有可能超过64KB,无法用16bit的寄存器表示,而如果粒度大于16字节的话,则很有可能会造成空间浪费,如果粒度设置为可变的话,则还需要另外的寄存器来存储粒度,会造成效率和空间的极大浪费。

三、寻址方式

3.1、立即数寻址,操作数位于代码段中,mov ax,1234h

3.2、寄存器寻址,操作数位于寄存器中,mov ax,bx

3.3、存储器寻址,操作数位于存储器中

★直接寻址,直接给出地址,mov ax,[1234h];mov ax,es:[1234h],如果没有指明地址所在段,则默认为DS。

★寄存器间接寻址,地址偏移量在寄存器中,和直接寻址类似,mov ax,es:[bx] 

★寄存器相对寻址,mov ax,es:[bx+1234h]  可以实现访问一维数组的某一元素

★基址加变址方式,mov ax,[bx+di]  可以实现遍历一维数组

★相对基址加变址,mov ax,[bx+di+1234h]  可以实现访问二维数组的某一元素

        基址只能使用 bx,bp,bp默认对应ss段,变址只能使用si,di

3.4、寻址方式总结

★存储器内部不能直接的传输数据是显而易见的,因为必须要CPU的参与才能完成数据的传输。

★存储器的寻址就是段的指定和偏移量的指定,其中偏移量的指定有几种方式,灵活应用即可。

 

四、指令系统  [Label:] Operator [Operand1[,Operand2]][;comment] 

4.1、指令总结如下图: 

4.2、条件跳转

条件跳转指令根据FLAG的相关标志位的结果进行跳转,跳转范围在-126-129之间,总结如下图:

五、伪指令

所谓伪指令就是不直接对应80x86的一条特定的指令,它的作用是为汇编器或者链接器提供程序的辅助信息,总结如下图:

5.1、段定义详解


六、dos功能调用

assume cs:codeseg  
  
codeseg segment  
  
 mov al,97 ;参数 
 mov ah,2   ;功能号 
 int 21h     ;dos调用
 mov ah,4ch  
 int 21h  
  
codeseg ends  
  
end 

七、中断

7.1、中断向量表大小为1024byte,每4byte代表一个中断入口地址,低字表示偏移,高字表示段号,为了容易寻址中断向量表,中断向量表位于地址0处。

7.2、通过 dos的35号调用,入口参数为中断号,es,bx将得到中断入口地址的段号和偏移。(当然也可以自己查)

7.3、中断返回用iret



微机接口课设 汽车控制系统 C语言源代码 Proteus 8086 前言:经过这次微机接口课程设计之后,更加深入理解了:总线、IO端口地址译码、可编程接口芯片、和外设四者之间的关系。自己亲自连接的线路、自己写的C语言代码,想想编程调试代码时候的遇到的困难,令人回味无穷~ 阅读详情

相关推荐

从零搭建8251串口通信系统:Proteus仿真+8086汇编完整流程指南

本文提供了一份基于Intel 8086微处理器和8251可编程通信接口芯片,从零搭建串口通信系统的完整实践指南。详细阐述了系统架构设计、Proteus仿真环境搭建、8086汇编程序编写(包括初始化、数据收发与错误处理)以及高级应用与调试技巧,帮助读者掌握硬件仿真与底层驱动开发的完整流程。

weixin_29159711的博客 243

Linux内核学习(一)8086编程模型

本文主要介绍Intel8086系列的编程模型,包括分段与分页机制、任务切换过程以及中断处理系统。作为Linux内核学习曲线的起点,本文的侧重点在于对于每个主题,硬件上是如何实现的,以及为软件(操作系统)提供了什么样的接口。本文不会介绍x86汇编语言的知识,有关知识请自行参考资料。 需要说明的是,Linux内核基于80x86,因此需要遵循8086的编程模型,但在很多地方实现了自己的策略。因此,如果

shuxiaogd的专栏 2455

深入理解Intel 8086微处理器编程

本文深入探讨了Intel 8086微处理器的编程,包括其程序员模型、操作数类型、寻址模式以及内存和I/O操作的细节。通过对8086架构的深入分析,我们能够更好地理解计算机系统的工作原理以及如何有效地进行硬件编程。

weixin_30661119的博客 430

8085编程模型-计算机工作过程及原理

一、冯诺依曼思想 1、由存储器、运算器、控制器、输入输出设备组成。 2、数据和程序以二进制的形式存放在内存中,存放的位置由地址指定,地址码为二进制。 3、控制器是根据存放在存储器中的指令序列,即程序来工作的,并由一个程序计数器控制指令的执行,控制器具有判断能力,能以计算结果为基础选择不同的工作流程。 二、计算机的工作过程 1、指令和数据放入内存; 2、数据放入CPU; 3、CPU内数据处理; ...

weixin_46199479的博客 1220

8086 CPU仿真软件emu8086实战指南

emu8086是一款集汇编语言编辑、编译、调试与CPU模拟于一体的集成开发环境,专为学习Intel 8086处理器架构设计。它提供直观的界面,支持实时寄存器监控、内存查看及单步执行功能,极大降低了初学者理解底层硬件行为的门槛。软件无需复杂配置,下载后直接运行安装程序,选择默认路径完成安装即可。启动后可新建.asm源文件,通过内置汇编器一键生成机器码并在模拟CPU中运行,实现从代码到执行的闭环验证。

weixin_29097457的博客 1992

IBM PC汇编语言程序设计实战教程

本文还有配套的精品资源,点击获取 简介:本书深入介绍了IBM PC汇编语言编程,详细解析了8086处理器的工作原理和内存模型,阐述了汇编语言程序设计中的基本语法、数据类型、寄存器使用、流程控制、I/O操作和内存管理等基础知识。通过对这些主题的学习,读者将掌握编写汇编语言程序的技巧,并理解计算机系统底层工作原理。实践性编程示例和项目巩固了理论知识,并帮助读者提高解决实际问题的...

weixin_31139479的博客 1393

8086的编程结构

8086的编程结构 8086是Intel系列的的16位微处理器,有16根数据线和20根地址线。因为可用20位地址,所以可寻址的地址空间达220字节即1MB。 几乎在推出8086微处理器的同时,为了与当时已有的一整套Intel外围设备接口芯片直接兼容,Intel公司还推出了准16位微处理器8088。8088的内部寄存器、内部运算部件以及内部操作都是16位的,但对外的数据总线只有8位。 编程结构,就是指从程序员和使用者的角度看到的结构,当然,这种结构与CPU内部的物理结构和实际布局是有区别的。在编程结构图中可看

qq_45180475的博客 5865

8086+8259+8255+8253经典微处理器和接口芯片模拟项目

8086微处理器于1978年由Intel公司设计推出,是第一款16位的微处理器,相较于早期的8位处理器,它在性能上有大幅提升。8086成为了个人计算机发展的里程碑,它的推出促使计算机变得更加普及和强大。8086指令集非常全面,包含了数据传输、算术逻辑、控制流、字符串处理等各类操作。举例来说,其算术指令如ADD和SUB,逻辑指令如AND和OR,控制流指令如JMP和CALL等,这些指令在程序设计中被广泛使用。

weixin_35949153的博客 1247

微机原理与接口技术之8086的编程结构

一.16位微处理器8086 8086有16根数据线和20跟地址线。从编程结构上看,8086分位两部分:总线接口部件(BIU)和执行部件(EU)。两部分是独立的,可以重叠工作。 总线接口部件是负责完成CPU与存储器或I/O设备间的数据传送。有下列各部分组成: ①4个段地址寄存器(16位) CS:代码段寄存器 DS:数据段寄存器 ES:附加段寄存器 SS:堆栈段寄存器 ②16位的指令指

qq_34528825的博客 1703

8086仿真模型

做了一个简单的8086仿真软件,测试通过。

8085处理器的汇编模拟器包

8085处理器的汇编模拟器包,含gnusim8085和win8085两个模拟器及相关文档,可以运行8085处理器的汇编程序。

微机原理实验更多使用Intel8088的原因 不采用Intel8086的原因

8086和8088芯片在微机原理实验中常被混用,但实验设备更多采用8088芯片。主要原因在于8088的8位数据总线降低了硬件成本与复杂度,能直接兼容廉价8位外设,同时其编程模型与8086完全一致,不影响教学效果。此外,8088因IBMPC的广泛应用形成了成熟的硬件生态和教学资源体系。尽管性能较低,但实验任务对速度不敏感,使用8088反而能更直观展示总线操作原理。因此,虽然统称"8086实验",实际实验设备多基于8088芯片。

cxhust001688的博客 1301

8086微处理器体系:编程和接口

Microprocessor 8086 Architecture, Programming and Interfacing,8086微处理器体系:编程和接口,英文原版

80386实模式编程模型

概括:当80386上电复位后,进入实模式状态,本文就介绍80386在实模式下的编程模型,采用和8086同样的叙述结构,相同的部分会省略。 一、寄存器1.1、80386寄存器结构图如下1.2、由上图可知,80386的寄存器和8086相比,区别如下:■ 所有的寄存器都被扩展到了32位

技术点滴记录 1771

8086汇编工作环境.zip

DOSBox是一个软件。它是当前在 Windows 系统运行 DOS 游戏的较为完美的解决方案,该软件不仅能支持相当多的游戏实现正常运行,而且能将声音完美表现出来。

8086编程结构.pdf

微机原理笔记之8086编程结构思维导图

从8086汇编到大模型训练,雷军手稿揭示技术人进阶的5个关键转折

揭秘技术人成长路径,雷军30年前手稿:从汇编到AI的变迁揭示从8086汇编语言到大模型训练的5个关键转折。涵盖程序员进阶方法、技术演进逻辑与实战思维跃迁,适合开发者与科技爱好者参考,值得收藏。

IterLoom的博客 469

LED背光驱动电路解析:从MP3394芯片到液晶屏灯管控制

本文深入解析了以MP3394芯片为核心的LED背光驱动电路工作原理。从升压电路的能量转换到多路LED的均流控制,详细阐述了其作为液晶屏背光“大脑”的关键作用,并提供了黑屏、闪屏、亮度不均等常见故障的实战检修思路与排查方法。

agile9scrum的博客 815

[汇编学习]8086汇编入门笔记

1)认识段定义伪指令是用来 定义程序中各个段(segment) 的范围和名字的。**代码段(Code Segment):**放指令**数据段(Data Segment):**放数据**堆栈段(Stack Segment):**放栈**附加段(Extra Segment):**放附加数据2)相关伪指令伪指令作用SEGMENT段开始定义ENDS段结束ASSUME假定段寄存器对应哪个段END程序结束(告诉汇编器汇编到此为止)a.SEGMENT开始定义一个段。

m0_66714671的博客 897

卫星监测“America”级#两#栖#攻#击#舰#(LHA-6)出港

卫星监测“America”级#两#栖#攻#击#舰#(LHA-6)出港 前脚刚走,后脚又来,山姆大叔又来刷存在感,2020年7月28日,USS Ronald Reagan流窜在我国东海海区被卫星拍了下来: 2020年8月1日,最新卫星图像显示USS Ronald Reagan已经返回母港日本横须贺:距离其出港(2020年6月8日)已经过去了快两个月 然而事情并没有到此结束,“America”级#两#栖#攻#击#舰#(LHA-6)选择在 “八.一” 这个特殊的日子前后出港颇具挑衅的味道。 根据2020年

qq_46071146的博客 1564

AnyGrasp实战指南:从环境配置到抓取检测与跟踪

本文详细介绍了AnyGrasp从环境配置到抓取检测与跟踪的实战指南。涵盖硬件要求、关键依赖安装避坑、抓取检测与跟踪的实战技巧,以及常见问题解决方案和性能优化建议,帮助开发者快速掌握这一高精度物体抓取检测与跟踪技术。

weixin_33712987的博客 274
上一篇: ruby之程序结构
下一篇: 80x86存储器组织结构
codesnail
博客等级 码龄18年 113粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值