- 博客(290)
- 资源 (12)
- 收藏
- 关注
原创 8088单板机监控程序解读(三)
8086/8088 CPU在响应INT1中断时,硬件会自动清除TF(Trap Flag)标志位,防止中断处理程序陷入无限单步循环。中断响应过程包括:压栈FLAGS(此时TF=1)、清除TF和IF标志位、保存CS:IP并跳转中断向量。实验验证显示,中断服务程序执行时的FLAGS寄存器中TF=0,而保存的用户FLAGS中TF=1。这种机制确保了单步调试的正常流程:用户程序指令触发INT1后,CPU能正确执行中断服务程序而不会重复触发单步中断。
2026-06-07 09:54:13
172
原创 8088单板机监控程序解读(二)
OFFSET16和OFFSET8是8088学习套件监控程序中的便捷功能,用于自动计算跳转指令的偏移量。OFFSET16适用于JMP NEAR、CALL NEAR等3字节指令(操作码+16位偏移),计算逻辑为:目标地址-(起始地址+2);OFFSET8适用于JMP SHORT、条件跳转等2字节指令(操作码+8位偏移),计算逻辑为:目标地址-(起始地址+1)。用户只需输入跳转指令占位符后,通过设置目标地址并按下对应功能键,程序即可自动计算并填充正确偏移量,省去了手动计算的麻烦。该功能极大简化了汇编跳转指令的编写
2026-06-07 09:48:44
182
原创 汇编返回指令ret iret retf区别
摘要:8086汇编中RET、RETF和IRET三个返回指令的核心区别在于栈操作和状态恢复。RET用于段内返回,仅弹出IP;RETF用于段间返回,依次弹出IP和CS;IRET用于中断返回,依次弹出IP、CS和FLAGS。错误使用会导致栈不平衡或状态恢复异常,因此必须配对使用:CALL NEAR对应RET,CALL FAR对应RETF,INTn对应IRET。栈帧结构差异体现在弹出的数据量和顺序,正确选择指令是确保程序正常返回的关键。
2026-06-06 08:31:08
142
原创 8088单板机监控程序解读(一)
在8088kit监控程序中,SERVICE_BREAK函数使用RET而非IRET的设计完全正确。关键点在于: SERVICE_BREAK本质是监控程序的内部函数,它通过POP保存中断现场(IP/CS/FLAGS)到变量区后,切换回系统栈并通过RET返回到监控主循环; 真正的用户程序恢复执行由KEY_GO(用RETF)和KEY_STEP(用IRET)函数实现; 这种设计将中断处理分解为"保存现场+退出"和"恢复执行"两个独立阶段,通过变量区传递状态,是清晰合理的架构设计
2026-06-06 08:11:54
464
原创 如何查看一个51单片机的库文件内容
51单片机库文件内容查看方法分两种:1)头文件(如reg52.h)可直接用编辑器打开,包含寄存器地址定义和位声明,通过Keil右键菜单或安装目录查看;2)库文件(.lib)需分析编译生成的.map/.M51链接文件,在Listings文件夹查找调用信息,通过反汇编定位函数调用链。头文件用于查看硬件接口定义,库文件分析可优化代码体积,但无法还原二进制库的源码。
2026-06-05 08:07:33
211
原创 8086汇编控制CH375实现U盘扇区读取
本文介绍了在8086平台上使用汇编语言通过CH375芯片读取U盘指定物理扇区(LBA 0)的方法。核心流程包括:初始化CH375、发送读扇区命令(0x54)、处理中断请求(轮询或中断方式)、分块读取数据(每扇区512字节分为8个64字节块)并校验状态。示例代码实现了从LBA 0读取1个扇区到DATA_BUFFER的功能,包含LBA地址传输(小端模式)、数据块循环读取(CMD_RD_USB_DATA和CMD_DISK_RD_GO命令)以及错误处理。调试要点强调初始化顺序、中断实现方式、缓冲区管理和LBA范围注
2026-06-05 08:04:41
320
原创 8088 单板机 + ADC0808 的 C 语言版本程序
本文介绍了一个基于8088单板机和ADC0808模数转换器的电压采集与显示系统。程序通过8255芯片控制,实现IN0通道0-5V模拟电压的采集,并将转换后的数字量计算为实际电压值(精度0.01V),通过4位数码管动态显示。关键功能包括:8255初始化(PA/PB输出,PC输入)、查询式ADC数据读取、电压值换算(Voltage=(AdcValue*500)/256)、数码管动态扫描显示(含消隐处理)。程序提供了端口地址修改指导,并建议通过软件滤波(多次采样取平均)提高稳定性,同时支持扩展多通道采集功能。系统
2026-06-04 08:07:33
780
原创 卷积的拉氏变换推导过程
本文简述了拉普拉斯变换中卷积定理的推导过程:首先定义卷积,写出拉普拉斯变换公式;通过交换积分次序和变量替换进行推导;最后代入条件得出结论。该定理适用于因果函数或在0到t区间定义的积分函数,表明时域卷积对应频域乘积。证明过程展示了拉普拉斯变换处理卷积运算的数学原理。
2026-06-03 10:35:00
20
原创 8086与8088单板机接口转换调试笔记(续)
这篇调试笔记记录了8086与8088单板机接口转换过程中的实践经历。作者在前期调试遇到问题后,采用飞线临时解决方案,随后重新设计了转换方案。通过手工焊接和更换测试,最终实现了完美转换效果。尽管这个转换原理简单,但对作者个人而言仍是一次有价值的实践。全文体现了硬件调试中发现问题、尝试解决方案并最终完善的过程。
2026-06-03 10:27:25
532
原创 C# 命令行指令 查看二进制文件
HexDump工具摘要 HexDump是一个C#开发的二进制文件十六进制查看器,具有以下核心功能: 文件查看:以十六进制和ASCII格式显示文件内容 偏移量支持:支持通过-o/--offset参数指定起始偏移量(十进制或十六进制) 分页显示:每页显示20行(每行16字节),按Enter继续或Q退出 错误处理:包含文件存在性检查和参数验证 使用方法:HexDump <文件路径> [-o <偏移量>],支持显示帮助信息(/? -h --help)。 (注:运行测试部分提到的图片处理功能与
2026-06-02 07:33:42
129
原创 用C#生成一个将dos 16位exe文件转换成com格式的命令行程序
这篇文章介绍了一个将16位DOS可执行文件(EXE)转换为COM格式的C#程序。程序首先解析MZ格式的EXE文件头,验证文件是否符合转换条件,包括:必须是TINY内存模型、入口点在CS:100h或CS:0000h、无重定位项、总大小不超过64KB等。验证通过后,程序会提取EXE文件中的代码和数据映像,去除MZ头信息,生成纯二进制的COM文件。程序提供了详细的错误检查和警告提示,确保转换的可靠性。转换结果保留了原始EXE的功能,但以更简单的COM格式保存,适合在DOS环境下运行。
2026-06-01 07:37:41
395
原创 C# 程序,实现二进制文件十六进制查看器,支持按行定位
这是一个C#实现的十六进制文件查看器程序,主要功能包括: 文件操作:支持通过菜单或快捷键Ctrl+O打开任意文件 显示功能: 左侧显示十六进制偏移地址和文件内容的十六进制表示 右侧显示对应的ASCII字符(不可见字符显示为点) 支持8/16/32字节每行的显示模式 当前行高亮显示 导航功能: 支持输入行号或十六进制偏移跳转 提供键盘导航(上下键、翻页、首尾跳转) 显示当前文件信息和位置状态 界面特性: 采用WinForms实现 包含菜单栏、状态栏和跳转面板 窗口大小变化时自动调整显示 程序使用Consola
2026-06-01 07:33:59
290
原创 DOS标准的 MZ 格式可执行文件详细结构
MZ格式是DOS可执行文件标准结构,以"4D5A"(ASCII"MZ")签名开头。其64字节头部包含关键参数:文件大小、内存需求、入口点(CS:IP)、堆栈(SS:SP)及重定位表位置。文件由三部分组成:MZ头、重定位表和512字节对齐的程序映像。加载时需进行段地址重定位,与COM文件相比支持更大内存和灵活入口。现代PE格式仍保留MZ头实现兼容。该结构定义了DOS程序加载的基础规范,影响后续Windows可执行格式设计。
2026-05-31 09:24:44
421
原创 一个dos版的exe加载器
这篇文章介绍了一个用16位汇编语言编写的DOS版EXE加载器(LOADEXE.COM),它能手动加载并执行标准的MZ格式可执行文件。主要功能包括:解析命令行参数、校验MZ文件签名、计算内存需求、分配内存、建立PSP、加载程序映像、处理重定位表修正,最后跳转到程序入口执行。该加载器不依赖DOS的EXEC调用,完全自行实现EXE文件的加载过程。通过MASM编译后,使用方法为"LOADEXE program.exe [args]",能正确传递命令行参数给被加载程序。文中详细说明了加载器的工作原
2026-05-31 08:51:45
248
原创 8086 FLAGS标志位详解
8086微处理器的16位标志寄存器(FLAGS)包含9个有效位,分为6个状态标志和3个控制标志。状态标志(CF/OF/ZF/SF/PF/AF)反映算术逻辑运算结果,用于条件跳转判断,其中CF针对无符号数溢出,OF检测有符号数溢出。控制标志(IF/DF/TF)控制CPU行为,如中断允许、串操作方向和单步调试。寄存器保留未使用的7位需置0保持兼容。典型应用包括多精度运算(CF)、有符号比较(OF/SF)、字符串操作(DF)和调试(TF)。不同指令对标志位影响各异,如算术运算影响全部状态标志,而逻辑运算仅影响部分
2026-05-30 20:32:30
500
原创 8088单板机单步运行测试
这篇文章展示了一个基于8086处理器的嵌入式系统开发项目,包含汇编和C语言的混合编程实现。主要内容包括: 硬件接口编程:实现了对8255并行接口芯片(控制数码管显示)、8253定时器(生成定时中断)和8259中断控制器(管理中断)的初始化与控制。 中断处理:设计了NMI(不可屏蔽中断)和INT1中断服务程序,其中NMI中断会触发计数器递增并通过数码管显示。 串口通信:实现了基本的UART串口发送功能,包括字符和字符串发送。 混合编程:通过汇编与C语言的交互,实现了寄存器读取、中断向量设置等功能。 系统功能:
2026-05-30 18:54:00
18
原创 8086与8088单板机接口转换调试笔记
本文介绍了8086单板机兼容8088接口的转换电路设计过程。初始设计实测不成功,经排查焊接、器件、PCB和排线等因素均未发现问题,最终发现8086与8088的M/IO引脚逻辑电平相反。在重新设计电路并手工修改验证通过后,最终完成了PCB制作。整个过程突出了硬件兼容性问题诊断的重要性,体现了从问题发现到解决方案实施的全流程。
2026-05-29 08:12:25
242
原创 如何利用iret修改cs ip
摘要: 利用iret指令修改CS和IP的核心是通过伪造栈上的中断返回帧实现跳转。执行iret时,CPU会依次弹出EIP、CS和EFLAGS到寄存器。32位模式下,栈帧需按[EIP][CS][EFLAGS]布局,特权级切换时还需压入SS和ESP。典型应用包括内核漏洞利用、任务切换和调试。注意事项包括特权级检查(避免触发GPF)、栈对齐要求以及EFLAGS合法性验证。该技术可能被恶意利用,防御措施包括检查栈完整性和启用SMEP/SMAP等安全机制。
2026-05-28 09:07:21
202
原创 8086/8088中断栈操作详解
摘要:8086中断处理过程中,硬件自动压入FLAGS、CS、IP(共6字节),随后用户代码手动压入AX、BX等10个寄存器(20字节)。FLAGS位于当前SP+22偏移处,可通过[bp+24]访问。恢复时需按相反顺序弹出寄存器,最后用IRET指令返回。堆栈向下增长,完整保存寄存器确保中断处理不破坏原程序状态。8086不支持PUSHA指令,需逐个压栈。
2026-05-28 09:02:11
435
原创 8088 INT1单步执行例程
摘要:本文详细介绍了Intel 8088处理器中INT1中断的单步调试机制。通过设置陷阱标志位(TF)触发中断,每执行一条指令自动进入中断服务程序。文章提供了完整的汇编示例,展示如何通过堆栈操作间接修改TF标志,实现指令级跟踪。中断服务程序记录执行步数并显示,达到设定步数后清除TF终止调试。示例包含关键实现细节:标志位操作、堆栈处理、寄存器保存及安全考虑,完整演示了8088处理器的单步调试功能。
2026-05-27 07:53:44
383
原创 8088单板机设计调试经验总结
《电子设计调试的艺术》摘要:本文分享了电子设计领域的调试经验与技巧。作者指出,任何设计都难以一次成功,强调模块化思维的重要性,建议将复杂问题分解为可控的小模块。文章重点介绍了8088处理器的INT1和INT3中断指令在调试中的应用,以及硬件调试时逐步添加元件的方法。作者认为电路设计是创造性活动,鼓励读者在理解基本原理的基础上大胆创新,并强调"能正常运行"才是最终检验标准。最后激励读者相信自己的能力,运用所学知识继续探索电子设计的无限可能。
2026-05-27 07:36:30
674
原创 8086 汇编 TINY 和 SMALL 编程MODEL区别
8086汇编中TINY和SMALL模型的主要区别在于内存布局和文件格式。TINY模型生成.COM文件,所有内容(代码、数据、堆栈)共享一个64KB段,适合小型工具;SMALL模型生成.EXE文件,代码和数据各占64KB空间,总容量可达128KB,适合稍大型程序。TINY模型结构紧凑加载快,SMALL模型则提供更好的代码数据隔离。选择依据程序大小:不超过64KB选TINY,否则选SMALL。
2026-05-26 08:50:24
256
原创 理解了微机原理,才能理解操作系统,理解了操作系统,才能理解好编程
《编程的地基:为什么微机原理和操作系统如此重要》 文章通过建筑比喻揭示了编程能力提升的关键。作者指出,单纯掌握编程语言和框架就像只会盖房子的表面工序,而微机原理才是支撑整个计算机体系的地基。操作系统则扮演着承上启下的关键角色,它封装硬件复杂性,为上层应用提供抽象接口。 文章将编程能力分为三个层次:会写代码、会写好代码、理解代码运行原理。强调只有深入理解CPU工作原理、内存管理、线程调度等底层机制,才能真正解决复杂问题。作者以多线程编程为例,说明缺乏底层知识会导致只能机械套用解决方案。 最后指出,虽然学习底层
2026-05-26 08:47:47
999
原创 8086 Proteus 8253制作跑表
该代码是一个基于8086处理器的计时器系统实现,主要包含三个功能模块:NMI中断服务程序、显示子程序和按键处理程序。系统通过定时器中断实现毫秒级计时,当毫秒计满100次(0.01秒)时触发秒计数。显示部分采用数码管段码表来显示毫秒和秒数值。按键处理程序通过检测状态标志(0-清零,1-启动,2-停止)来控制计时器的运行状态。代码中还包含了延时消抖子程序,并定义了数码管的共阴段码表。整个系统通过NMI中断向量初始化,使用特定端口进行定时器配置,实现了一个基础的计时器功能。
2026-05-25 10:18:25
45
原创 Proteus例程导入方法
该资源提供了Proteus与8086仿真的67个示例程序,主要包含以下操作指南:1)通过文件导入选项加载项目;2)按步骤完成导入流程;3)使用"Add Files"功能添加源代码;4)最后编译生成可运行固件。这些例程适用于8086微处理器仿真学习,帮助开发者快速掌握Proteus环境下的嵌入式开发流程,适合单片机与微机原理的实践教学。(99字)
2026-05-25 10:01:21
241
原创 个人计算机的起点,INTEL 8088
《8088芯片:个人计算机时代的奠基者》摘要 英特尔8088芯片虽仅含2.9万晶体管,却是PC革命的关键起点。1979年,这款"准16位"处理器通过保留内部16位运算、降级外部总线至8位的创新设计,大幅降低了整机成本,解决了当时8位外设的兼容难题。IBM采用8088并开放架构的决策,直接催生了兼容机产业,激活了整个PC生态系统。作为数字时代的第一滴水,8088不仅是一件硬件,更代表着务实创新的工程智慧,为现代计算机世界奠定了基础。
2026-05-24 11:17:12
361
原创 8088单板机完整测试
该代码实现了一个基于AD0808模数转换器和LCD显示的系统。主要功能包括:1) 通过AD0808进行模数转换,将结果转换为电压值显示在LCD上;2) 提供时间设置功能,可调整时、分、秒;3) 包含数码管显示和LED控制功能。程序使用端口I/O操作与硬件交互,包含LCD初始化、数据读写、定时器设置等底层驱动。系统主循环持续读取AD转换结果并更新显示,同时支持通过按键调整时间参数。代码采用嵌入式C语言编写,包含硬件寄存器定义、中断处理、延时函数等典型嵌入式系统组件。
2026-05-24 10:43:58
24
原创 AD0808调试笔记
ADC0808采样期间地址线A2A1A0必须保持稳定 ADC0808在采样和转换过程中,地址线A2、A1、A0必须保持不变,否则可能导致通道切换错误。其核心机制是: 地址锁存:ALE上升沿锁存地址线状态,此后内部多路开关固定连接对应通道,地址线变化不影响当前转换。 工作流程:设置地址→ALE锁存→启动转换→等待EOC信号→读取结果。若信号变化过快,需外接采样保持电路以确保精度。 代码示例:通过8255控制ADC0808采集电压,数码管动态显示结果,需注意通道地址稳定性和EOC查询时序。 关键点:地址锁存后转
2026-05-23 16:09:11
236
原创 8088单板机扩展板(三)---AD实验
本文展示了一个基于8253A定时器和AD0808模数转换器的嵌入式系统代码实现。主要内容包括:1) 硬件接口定义,包括I/O端口地址、LCD寄存器地址和8253A定时器控制参数;2) 实现了LCD显示控制函数,包括初始化、写命令/数据、光标定位等功能;3) 包含AD0808模数转换的数据采集和处理函数,将转换结果转换为电压值显示;4) 提供了时间调整功能,可通过外部输入修改时、分参数。代码采用嵌入式C语言编写,包含底层端口操作和中断处理机制,适用于工业控制和仪器仪表应用场景。
2026-05-23 07:47:05
230
原创 8088单板机接口扩展实验(二)LCD1602
本文展示了一个基于8253A定时器和LCD显示的时间控制系统程序。程序定义了I/O端口地址、LCD控制命令和定时器模式设置,实现了时间显示和调整功能。主要功能包括:通过中断处理更新时间变量,LCD显示当前时间(12:30:00格式),以及通过按键调整小时和分钟。程序使用汇编指令实现端口读写操作,包含LCD初始化、忙等待、命令/数据写入等基本操作,并通过延时函数控制显示刷新频率。测试部分验证了时间显示和调整功能的正确性。
2026-05-21 16:57:12
44
原创 8088单板机IO扩展实验(一)
该代码是一个嵌入式硬件测试程序,主要用于控制LED显示和按键检测。程序定义了多个I/O端口地址,包含输出函数outp()和输入函数inp(),以及共阳极数码管编码表segTable。主函数main()实现了一个循环检测按键状态并控制LED显示的功能:当按键按下时计数器清零,同时将按键状态输出到LED端口;程序还包含数码管显示功能,通过计数器cnt_run控制显示数字0-99的循环变化。整个程序通过直接操作硬件端口实现输入输出控制,适用于嵌入式系统的底层硬件测试。
2026-05-20 19:13:29
129
原创 焊接电路板一般温度多少
焊接电路板时,温度设置很关键。含铅焊料推荐350°C,无铅焊料需375°C左右。特殊元件如芯片应调至260-300°C,大焊点可升至380°C。判断温度是否合适:温度低时焊锡粘稠不流动,温度高则松香快速蒸发冒烟。新手建议从含铅焊料入手,配合废弃电路板练习,并注意保养烙铁头。焊接时间控制在2-4秒,避免损坏元件。
2026-05-19 11:08:09
208
原创 pc16550 LSTAT 位定义
PC16550的线路状态寄存器(LSR)位于偏移地址5,是只读寄存器,用于监控串行通信状态。关键功能包括:Bit0(DR)指示接收数据就绪;Bit1(OE)标记数据溢出;Bit2(PE)和Bit3(FE)分别检测奇偶校验和帧格式错误;Bit4(BI)识别线路间断;Bit5(THRE)和Bit6(TEMT)反映发送寄存器状态;Bit7(FIFO Error)在FIFO模式下报告接收错误。错误标志在读取LSR后自动清零,发送数据前需检查THRE位。该寄存器对串口通信的可靠性和错误处理至关重要。
2026-05-19 11:04:38
227
原创 微信考勤小程序开发环境搭建
本文介绍了微信小程序中二维码生成功能的实现步骤:1. 环境准备:安装开发者工具并创建空白项目,引入二维码生成库文件;2. 页面开发:创建包含canvas的画布页面,编写生成二维码的核心逻辑代码;3. 测试运行:在模拟器和真机上进行功能测试,提供调试技巧。文章详细说明了从项目创建到功能实现的完整流程,包括文件结构、代码实现和测试方法,帮助开发者快速掌握小程序二维码生成功能。
2026-05-19 11:02:08
197
原创 从裸机到微内核:8088单板机微型操作系统规划设计
本文探讨了在8088单板机上设计微型操作系统(uOS)的核心问题。8088处理器资源极其有限(32KB RAM/64KB ROM),无MMU和磁盘,要求系统极度精简。作者设计了中断驱动的协作式单地址空间架构,包含极简任务控制块(4字节)、非抢占式轮询调度和基本系统调用(串口I/O、延时等)。系统采用固定内存布局,任务直接操作物理地址,通过主动让出CPU实现多任务切换。文章还分享了调试中的堆栈溢出和中断重入问题解决方案,并指出这种微型OS设计对理解计算机本质和现代嵌入式开发仍具重要价值。
2026-05-18 08:23:15
1711
原创 PC16550 C语言版本(适用于8088单板机小型C编译器)
本文介绍了一个基于8088单板机的PC16550 UART接收程序,采用直接端口访问方式实现串口通信。程序通过查询方式检测数据接收,支持9600波特率、8位数据位、无校验位和1位停止位的配置。关键功能包括:初始化UART、接收单个字节、带超时的批量数据接收、错误检测(溢出/奇偶/帧错误)以及FIFO缓冲区管理。程序还提供键盘控制功能(按Q键退出)和数据显示功能(ASCII和十六进制格式)。该程序适用于DOS或ROM BASIC环境,可直接在8088兼容单板机上运行。
2026-05-18 08:15:07
51
原创 一个适用于8088单板机的PC16550 UART数据接收程序
本文介绍了一个基于8088处理器的PC16550 UART接收程序,采用汇编语言编写。程序包含完整的UART初始化流程,支持9600波特率、8位数据格式,实现了数据接收、错误检测(包括溢出、奇偶校验和帧错误)以及缓冲区管理功能。关键特性包括:1) 通过查询方式检测接收数据;2) 256字节接收缓冲区;3) 超时处理机制;4) 错误状态显示功能。程序结构清晰,包含初始化模块、数据接收模块、错误处理模块和显示模块,适用于单板机环境下的串口通信开发。
2026-05-18 08:11:28
107
8088单板机原理图+PCB板图+Boot代码
2022-05-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅