自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 《汇编语言》第3版 (王爽)实验7解析

方法一:将每个数据项逐个进行传输,共有4个数据项(分别是年份、收入、雇员数、人均收入)人均收入需要计算后得到,每个数据项又有21个元素,所以需要传输21次。实验7 寻址方式在结构化数据访问中的应用。方法二:一次传输一组数据,一共传输21次。

2024-03-19 16:26:57 536 1

原创 《汇编语言》第3版(王爽)第16章

(1).用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行;(2)对于1、2号功能,用al传送颜色值,(al)∈{0,1,2,3,4,5,6,7}。下面的程序将code段中a处的8个数据累加,结果存储到b处的双字中,补全程序。下面的程序将data段中a处的8个数据累加,结果存储到b处的字中,补全程序。安装一个新的int 7ch中断例程,为显示输出提供如下功能子程序。(4).向上滚动一行;(2).设置前景色;(3).设置背景色;

2024-03-17 10:52:11 382

原创 《汇编语言》第3版 (王爽)第15章

其实在我们的int9中断例程中,模拟int指令调用原int9中断例程的程序段是可以精简的,因为在进入中断例程后,IF和TF都已经置0,没有必要再进行设置了。在主程序中,如果在执行设置int9中断例程的段地址和偏移地址的指令之间发生了键盘中断,则CPU将转去一个错误的地址执行,将发生错误。安装一个新的int9中断例程,功能:在DOS下,按下”A”键后,除非不再松开,如果松开,就显示满屏幕的”A”,其他的键照常处理。提示,按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。断码=通码+80h。

2024-03-15 10:30:09 662

原创 《汇编语言》第3版 (王爽) 第14章

注意:CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元中写入内容,否则将引起一些系统错误。在CMOS RAM中用6个字节存放当前时间(以BCD码形式存放),地址02中存放的是分。编程,以“年/月/日 时:分:秒"的格式,显示当前的日期、时间。即从2号单元中读到的内容是当前时间的分钟。(1).编程,读取CMOS RAM的2号单元的内容。提示,(ax ×10)=(ax)×2+(ax)×8。(2).编程,向CMOS RAM的2号单元写入0。如:计算2 ×10 = 20。

2024-03-14 10:03:04 485

原创 《汇编语言》第3版 (王爽) 第13章

(1)在上面的内容中,我们用7ch中断例程实现loop的功能,则上面的7ch中断例程所能进行的最大转移位移是多少?以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察int、iret指令执行前后cs、ip和栈中的状态。(1).我们可以编程改变FFFF:0处的指令,使得CPU不去执行BIOS中的硬件系统检测和初始化程序。(1).编写并安装int 7ch中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处。(3).下面的程序,分别在屏幕的第2、4、6、8行显示4句英文诗,补全程序。

2024-03-13 19:16:42 474

原创 《汇编语言》第3版 (王爽)第12章

在中断向量表中,1个表项存放一个中断向量,也就是1个中断处理程序的入口地址,对于8086CPU,这个入口地址包括段地址和偏移地址,编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串“divide error!”,然后返回到DOS。存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为:Nx4+2。,所以N号中断源地址从N*4开始,3号中断源从第12个字节开始。实验12 编写0号中断的处理程序。

2024-03-10 16:21:32 190

原创 《汇编语言》第3版 (王爽)实验11解析

运行程序后,再次使用D命令查看内存单元处内容如下:可看到此时小写字母已经被转换成大写字母。编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母。将程序加载后使用D命令查看内存单元处内容如下:此时数据还未被修改。第11章 实验11解析。

2024-03-10 13:56:00 281

原创 《汇编语言》第3版(王爽)实验9

编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 ‘welcome to masm!

2024-03-09 20:29:06 580

原创 《汇编语言》第3版 (王爽)检测点11.1解析

写出下面每条指令执行后,ZF、PF、SF等标志位的值。第11章 检测点11.1解析。

2024-03-08 15:24:48 183

原创 《汇编语言》第3版 (王爽)第10章检测点解析

我们知道call far ptr指令实现的是段间转移,会将CS中的段地址和IP中的偏移地址依次入栈,所以上面程序执行完call指令后,会先将段地址1000入栈,再将偏移地址8入栈(注意是下一条指令的地址),然后跳转到s执行,根据栈"先入后出"的原则,执行完pop ax后会先将8取出放入AX中,然后执行add ax,ax后,AX = 8+8 = 16(10H),再将1000H出栈放入BX中,执行完add ax,bx后,AX = 1000H + 10H = 1010H,所以执行后,AX中的数值为。

2024-03-07 21:06:01 641

原创 《汇编语言》第3版 (王爽)检测点9.1、2、3解析

程序加载后使用R命令查看寄存器中内容,我们可以看到CS:IP = 076B:0000,即第一条指令的地址。下面继续执行程序到jmp指令之前,我们可以使用D命令再次查看内存单元中的数据,此时已经变成了第一条指令的地址076B:0000。若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?注意高地址处的字是转移的目的段地址,低地址处是转移的目的偏移地址。补全程序,使jmp指令执行后,CS:IP指向程序的第一条指令。第九章 检测点9.1、2、3解析。

2024-03-06 14:17:49 664 1

原创 《汇编语言》 第3版 (王爽)实验6解析

编程,将datasg段中每个单词的前4个字母改为大写字母。(1).编程,完成问题7.9中的程序。程序未执行前内存单元中的数据如下。程序执行后内存单元中的数据如下。可看到前四个字母修改成了大写。

2024-03-05 19:07:16 339

原创 《汇编语言》第3版(王爽)检测点6.1解析

(2).下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。此程序利用栈进行数据传送,则只需要将栈顶设置在数据段的最后面,然后利用出栈将数据放入0:0~0:15即可。第6章 检测点6.1。

2024-03-04 18:40:17 394 1

原创 《汇编语言》第3版(王爽)实验4解析

(2).编程,向内存0:200~0:23F依次传送数据0-63(3FH),程序中只能使用9条指令,9条指令中包括“mov ax,4c00h”和“int 21h”。(3).下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。(1).编程,向内存0:200~0:23F依次传送数据0-63(3FH)。第5章 实验4 [bx]和loop的使用。

2024-03-03 20:12:22 517

原创 《汇编语言》第3版 (王爽)检测点3.2解析

(1).补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H-2000FH。逆序复制的含义如图3.17所示(图中内存里的数据均为假设)。(2).补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H—2000FH中。此程序和上面的程序正好相反,由入栈变成了出栈,那么此时只需要修改栈顶地址即可。

2024-03-02 19:28:37 307

原创 《汇编语言》第3版 (王爽)检测点3.1解析

各寄存器的初始值:CS = 2000H,IP = 0,DS = 1000H,AX = 0,BX = 0;通过上述过程,我们可以知道使用CS和IP读取的是指令,而是用DS和[xxxx]读取的是数据。下面的程序执行前,AX = 0,BX = 0,写出每条汇编指令执行完后相关寄存器中的值。③再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?(1).在Debug中,用“d 0:0 1f”查看内存,结果如下。②写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。第三章 检测点3.1。

2024-03-01 20:28:55 661 1

原创 《汇编语言》第3版(王爽)检测点2.2解析

已知偏移地址的范围从0到FFFFH,则当偏移地址EA = 0时,物理地址20000H = SA *16 + 0,可得出最大段地址SA = 2000H;当偏移地址EA = FFFFH时,物理地址20000H = SA *16 +FFFF,此时的 SA * 16 = 10001,而段地址SA还需要除以16,因而得出SA = 01000H,但是此时加上偏移地址再去反推物理地址时,最大的寻址地址为 1FFFF H,少了1,无法寻到,所以此时段地址需要再加1即 01000 H + 1 =1001H才能寻到。

2024-02-29 18:54:15 187 1

原创 《汇编语言》第3版(王爽)检测点2.1解析

(2).只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。(1).写出每条汇编指令执行后相关寄存器中的值。第2章 检测点2.1。

2024-02-29 12:20:24 242

原创 《汇编语言》第3版(王爽)检测点1.1解析

而我们知道1B = 8bit,即一字节 = 8位,所以8根数据线一次可以传送8bit = 1B,16根数据线一次可以传送16bit = 2B,32根数据线一次可以传送32bit = 4B。:通过第一题我们知道1个存储单元可以存储1个Byte(字节),那么 1KB = 1024 Byte 即可以存储1024个字节,存储单元的编号是从0开始的,所以是0到1023一共1024个字节。(6).8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。

2024-02-28 18:46:22 412

原创 蓝桥杯单片机竞赛学习计划(十)

上一节介绍了DS18B20温度传感器的通讯方式以及使用方法,编写程序实现数码管显示环境温度,这一节我们来学习DS1302时钟模块。DS1302是一款涓流充电计时芯片,其内部包含一个实时时钟和31字节的静态RAM。实时时钟可以提供秒、分、时、日、日期、月和年的信息,并且小时具有24小时和12小时两种格式。其掉电时保持数据和时钟走时的功耗能够小于1uw。

2024-01-24 18:40:00 1246 1

原创 蓝桥杯单片机竞赛学习计划(九)

上一节介绍了PFC8591芯片,并编写程序实现了两路AD的转换,那么今天我们一起来学习一下DS18B20温度传感器。

2024-01-23 19:36:57 1025 1

原创 蓝桥杯单片机竞赛学习计划(八)

本来打算这一节介绍DS18B20温度传感器的内容,但是想了想既然上一节已经介绍过使用I2C协议通信的AT24C02了,所以这一节干脆把PFC8591一起介绍了,正好这两都是使用I2C协议通信的。提示:以下是本篇文章正文内容,下面案例可供参考PFC8591是八位AD/DA转换器,即模数/数模转换器,可以将输入的模拟信号转换成数字信号输出,也可将输入的八位数据转换成模拟信号输出,今天我们主要使用它的A/D功能,即读取外部输入的模拟信号。

2024-01-20 20:29:58 1414

原创 蓝桥杯单片机竞赛学习计划(七)

之前的章节我们把单片机外围最基础的一些外设如流水灯、数码管以及内部资源定时器和中断都学习完了,那么这一节开始我们学习比较重要的几个模块,今天先来学习存储模块AT24C02。存储器,通俗点讲就是能够存储数据的器件,我们都知道计算机只认识二进制,所以存储器里的数据也是以二进制的形式进行存储的,而存储器通常分为随机存储器(RAM)和只读存储器(ROM)两大类,下面我们分别来介绍一下。AT24C02属于E2PROM存储模块,数据掉电后不会丢失。

2024-01-19 21:15:21 970 1

原创 蓝桥杯单片机竞赛学习计划(六)

在上一节中,简单介绍了定时器的相关内容,一起学习并使用了定时器实现LED灯闪烁,那么在这一节中,我们就来一起学习一下中断。

2024-01-15 20:14:47 1004 1

原创 蓝桥杯单片机竞赛学习计划(五)

上一节我们学习了矩阵键盘,这一节来学习单片机中最重要的内部资源——定时器。定时器,顾名思义就是用来定时的,说的通俗一点,比如我准备去跑步,跑步前需要热身5分钟,那么我把手机打开,然后定时5分钟,定时完后开始热身,这时候定时器就开始计时,计时到5分钟之后会响铃提醒我5分钟到了,热身完毕要开始跑步了,那么这时候我就开始跑步了。

2024-01-14 20:48:00 1395 1

原创 蓝桥杯单片机竞赛学习计划(四)

在上一节中,我们一起学习了独立按键的使用,那么今天我们就开始来学习矩阵键盘的使用。相比于独立按键,矩阵键盘要稍微复杂一点,在编写独立按键的时候,我们用四个引脚分别判断连接的四个按键哪一个按下,这没什么问题,但是矩阵键盘一共有16个按键,如果我们每一个按键都接一个IO口,那就大大浪费了单片机IO口的资源,所以矩阵键盘一般采用行列式的连接方式,使用4条IO口作为行线,4条IO口作为列线,每个按键都接在行线和列线的交叉点上,这样子只需要一共只需要8个IO口,大大节省了单片机的IO口资源。

2024-01-13 20:58:10 562 1

原创 蓝桥杯单片机竞赛学习计划(三)

在上一节中我们学习了数码管的使用,那么今天我们一起来学习一下独立按键的使用。按键这东西在我们平常生活中使用的再多不过了,比如我们电脑使用的鼠标,里面就用到了按键。按键其实就是一种开关,按下按键就可以使开关接通,松开手,开关就断开,通常我们使用的按键一般为机械按键,由于是机械按键,所以按键按下的瞬间会有10~20ms的抖动。我们在使用按键时,一般要在程序中做消抖处理。竞赛板上一共有16个按键,可分成独立按键和矩阵键盘两种模式,今天我们先来学习一下独立按键的使用。

2024-01-12 19:25:33 673 1

原创 蓝桥杯单片机竞赛学习计划(二)

上一节我们学习了点亮LED灯,成功编写程序将竞赛板上的八个LED灯点亮了,那么今天我们一起来学习点亮数码管。数码管是一种显示器件,在平时生活中应该是比较常见的,比如有些热水器就是使用数码管来显示水温的。每个数码管的内部其实都是由8个LED灯组成的,只是对其进行了排列然后进行了封装。根据数码管内部连接方式的不同,分为共阳数码管和共阴数码管。

2024-01-11 21:26:46 545

原创 蓝桥杯单片机竞赛学习计划(一)

昨天学校开始放寒假,由于之前正好报名参加了十五届蓝桥杯单片机竞赛,所以想利用寒假这段时间准备一下蓝桥杯的比赛,同时计划每天写一篇博客记录一下每日所学。今天当然是从最基础的点亮LED灯开始勒,Ready Go!板子上共焊有8个贴片红色LED灯,这八个LED灯的阴极分别连接到74HC573锁存器的8个输出端,而锁存器的八个输入端又连接到单片机的P0端口,所以如果想要驱动这八个LED灯,只需要给P0端口输出高低电平即可。原理图如下:大家可以看到,锁存器的锁存使能端LE连接到Y4C,那Y4C又连接到哪里呢?

2024-01-10 22:45:20 1148

原创 STM32教程

在使用STM32驱动OLED屏幕的时候,由于使用的OLED不带中文字库,所以想要显示汉字的时候,每次都需要用取模软件将想要显示的汉字字模数据取出来,比较麻烦,所以自己写了一个可以显示任意汉字的函数,同时制作了一个GB2312的中文字库(目前正在更新中)。由于汉字库需要的存储空间较大,所以如果使用的型号内存较小不建议使用,还是取字模的方式更实在一点。当然如果有外部FLASH或者内存够大,那用汉字库就非常方便了。

2024-01-01 20:07:29 1040 1

ESP8266模块使用说明 阿波罗

ESP8266WIFI模块的使用说明,

2018-09-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除