卑微卑中卑

前言

因为周五晚上要考微机实验,这几天一直在从零开始复习微机

本以为自己在考试前把前几次的实验代码搞懂

而且提前还把其他班级考完的题目代码拷到了U盘里就稳稳的了

没想到

现实还是很残酷的

晚上六点半我们进入了实验室

凯爷爷给我们进行了分组,害

我们组没有大佬

只能靠自己了

题目

自己的手气还是不错的,抽到的题目也不算太难

题目如下

概述

这道题刚看起来我们也没啥思路

读了几遍题目之后,发现和之前那个跑马灯的实验非常相似

大概思路差不多就是利用8253延时1s,8255输出跑马灯形式到发光二极管

然后启动0832延时输出一个锯齿波

最后启动直流电机运转

思路不就是这样嘛

我想老师也不会太抠细节吧

具体细节其实我真的也不太懂 反正就结合别人的代码和书上的代码来呗

于是我们很快就搞出来了程序

程序实现

直接上代码

CODE SEGMENT
ASSUME CS:CODE
START:
;8255初始化
MOV AL,90H
MOV DX,293H ;8255 控制字
OUT DX,AL
MOV BL,01H ;从第一个灯开始
;8253初始化
MOV AL,00110101B ;0通道控制字
MOV DX,283H ;8253控制字
OUT DX,AL
MOV AL,00H ;低八位
MOV DX,280H ;写入低八位
OUT DX,AL
MOV AL,50H ;写入高八位
OUT DX,AL
;级联 这里要用到两个计数器
MOV AL,01110110B
MOV DX,283H
OUT DX,AL
MOV AX,00H ;写入低八位
MOV DX,281H ;1通道 写入第二个计数器
OUT DX,AL
MOV AL,02H ;写入高八位
OUT DX,AL

MOV BH,00H //这里的BH说实话 我真的不太理解 所以便有了后续
MOV CX,07H ;这里是5次循环操作
;8255,循环
T1:
MOV DX,290H
IN AL,DX
TEST AL,00000001B ;与操作
JNZ T2
MOV BH,00H
JMP T1
;运行
T2:
TEST BH,00000001B
JNZ T1
INC BH
JNZ TES
TES:
MOV AL,BL ;从右向左移两位
MOV DX,291H
OUT DX,AL
ROL BL,2
DEC CX
JNZ T1
;全亮
MOV DX,291H
MOV AL,11111111B ;小灯最后全亮
OUT DX,AL


;锯齿波
MOV DX,2A0H ;先让程序运行一遍
MOV AL,00H
OUT DX,AL
MOV BL,00H

UP:
INC BL ;上升

T00: ;8253延时
MOV DX,290H
IN AL,DX
TEST AL,01H
JNZ T00
MOV DX,2A0H
MOV AL,BL
OUT DX,AL
CMP BL,255
JNE UP

STO: ;下降
MOV AL,00H

T11: ;第二次延时 微观延时
MOV DX,290H
IN AL,DX
TEST AL,01H
JNZ T11

JMP UP
CODE ENDS
END START

验收与答辩

我本以为这老师挺好的

平日里和他相处的也不错

再加上这个实验的代码我大致理解的也还行

应该不会出什么问题

但是当老师来到了我们面前 缓缓地坐了下来

一切都变了

我们给他看运行的效果

他直接怼我说这个循环是要整体循环五次

可是我TM实验开始的时候就问你这个问题了啊

你怎么回答的我心里没有什么13数嘛

怎么到检查的时候你的检查标准就变了 我也是服了

更可恶的是 他问我的问题也及其刁钻 (这里就不说是啥问题了 我这辈子都不会理解的 以后再也不学这东西了反正)

结果就因为这个问题给了我个及格分

我就想着 为什么别人没做出来 分数都比我高

我一个自己一步一步理解的 而且运行结果都正确的一个程序

你个老头子给我个及格分

真是个只是表面上慈善的人啊

看不懂他的操作!!!!!!

总结

这几天的复习真的没有白做

功夫不负有心人 只要对得起自己就行

自己觉得自己理解了 自己学会了以前不懂的知识 这就够了

至于给多少分 已经不重要了

又是充实的一天 一天比一天进步就好

好了 周五的晚上也该放松放松了 就写到这里吧

明天还得继续我的微机复习呢!!!(看到这篇文章的你如果也为微机考试而烦恼的话 不要怕 干就完了 只要你努力 其实真不是很难! )