first commit
BIN
Lab/Lab1/21281280_柯劲帆_第1次实验.zip
Executable file
23
Lab/Lab1/21281280_柯劲帆_第1次实验/1.asm
Executable file
@@ -0,0 +1,23 @@
|
||||
DATA SEGMENT
|
||||
NUM1 DD 11451400H
|
||||
NUM2 DD 19198100H
|
||||
SUM DD ?
|
||||
DATA ENDS
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
start:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
MOV AX, WORD PTR NUM1
|
||||
MOV WORD PTR SUM, AX
|
||||
MOV BX, WORD PTR NUM2
|
||||
ADD WORD PTR SUM, AX
|
||||
|
||||
MOV AX, WORD PTR NUM1+2
|
||||
ADC WORD PTR SUM+2, AX
|
||||
MOV AX, WORD PTR NUM2+2
|
||||
ADD WORD PTR SUM+2, AX
|
||||
MOV AH, 4CH
|
||||
INT 21H
|
||||
CODE ENDS
|
||||
END start
|
||||
36
Lab/Lab1/21281280_柯劲帆_第1次实验/2.asm
Executable file
@@ -0,0 +1,36 @@
|
||||
DSEG SEGMENT
|
||||
XXX DW 1234H
|
||||
YYY DW 5678H
|
||||
ZZZ DD ?
|
||||
DSEG ENDS
|
||||
|
||||
CSEG SEGMENT
|
||||
ASSUME CS:CSEG,DS:DSEG
|
||||
START:MOV AX,DSEG
|
||||
MOV DS,AX
|
||||
|
||||
MOV AX,XXX
|
||||
XOR DX,DX
|
||||
|
||||
ADD AX,AX
|
||||
ADC DX,0
|
||||
|
||||
ADD AX,AX
|
||||
ADC DX,0
|
||||
|
||||
ADD AX,AX
|
||||
ADC DX,0
|
||||
|
||||
ADD AX,AX
|
||||
ADC DX,0
|
||||
|
||||
ADD AX,YYY
|
||||
ADC DX,0
|
||||
|
||||
MOV WORD PTR ZZZ,AX
|
||||
MOV WORD PTR ZZZ+2,DX
|
||||
|
||||
MOV AH,4CH
|
||||
INT 21H
|
||||
CSEG ENDS
|
||||
END START
|
||||
BIN
Lab/Lab1/21281280_柯劲帆_第1次实验/21281280_柯劲帆_第1次实验报告.pdf
Executable file
BIN
Lab/Lab1/DOSBOX的安装与使用.docx
Executable file
BIN
Lab/Lab1/material/1-1.png
Executable file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
Lab/Lab1/material/1-2.png
Executable file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
Lab/Lab1/material/1-3.png
Executable file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
Lab/Lab1/material/1-4.png
Executable file
|
After Width: | Height: | Size: 8.4 KiB |
23
Lab/Lab1/material/1.asm
Executable file
@@ -0,0 +1,23 @@
|
||||
DATA SEGMENT
|
||||
NUM1 DD 11451400H ; 被加数
|
||||
NUM2 DD 19198100H ; 加数
|
||||
SUM DD ? ; 结果
|
||||
DATA ENDS
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
start:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
MOV AX, WORD PTR NUM1 ; 将NUM1低位赋给AX
|
||||
MOV WORD PTR SUM, AX ; 将AX赋给SUM低位(MOV指令不能直接在两个内存单元间赋值)
|
||||
MOV AX, WORD PTR NUM2 ; 将NUM2低位赋给AX
|
||||
ADD WORD PTR SUM, AX ; 将AX加到SUM的低位上
|
||||
|
||||
MOV AX, WORD PTR NUM1+2 ; 将NUM1高位赋给AX
|
||||
ADC WORD PTR SUM+2, AX ; ADC(Add with Carry)将AX加到SUM的高位(初始为零)上,再加上CF存着的低位进位
|
||||
MOV AX, WORD PTR NUM2+2 ; 将NUM2高位赋给AX
|
||||
ADD WORD PTR SUM+2, AX ; 将AX加到SUM的高位上
|
||||
MOV AH, 4CH ; 退出程序
|
||||
INT 21H
|
||||
CODE ENDS
|
||||
END start
|
||||
BIN
Lab/Lab1/material/2-1.png
Executable file
|
After Width: | Height: | Size: 74 KiB |
BIN
Lab/Lab1/material/2-2.png
Executable file
|
After Width: | Height: | Size: 84 KiB |
BIN
Lab/Lab1/material/2-3.png
Executable file
|
After Width: | Height: | Size: 40 KiB |
37
Lab/Lab1/material/2.asm
Executable file
@@ -0,0 +1,37 @@
|
||||
DSEG SEGMENT
|
||||
XXX DW 1234H
|
||||
YYY DW 5678H
|
||||
ZZZ DD ?
|
||||
DSEG ENDS
|
||||
|
||||
CSEG SEGMENT
|
||||
ASSUME CS:CSEG, DS:DSEG
|
||||
START:
|
||||
MOV AX, DSEG
|
||||
MOV DS, AX
|
||||
|
||||
MOV AX, XXX ; 将XXX赋给AX
|
||||
XOR DX, DX ; 异或DX和DX,即将DX置0
|
||||
|
||||
ADD AX, AX ; AX *= 2, AX = 2 * XXX
|
||||
ADC DX, 0 ; 把进位保存在DX中
|
||||
|
||||
ADD AX, AX ; AX *= 2, AX = 4 * XXX
|
||||
ADC DX, 0 ; 更新DX中的进位信息
|
||||
|
||||
ADD AX, AX ; AX *= 2, AX = 8 * XXX
|
||||
ADC DX, 0 ; 更新DX中的进位信息
|
||||
|
||||
ADD AX, AX ; AX *= 2, AX = 16 * XXX
|
||||
ADC DX, 0 ; 更新DX中的进位信息
|
||||
|
||||
ADD AX, YYY ; AX += YYY, AX = 16 * XXX + YYY
|
||||
ADC DX, 0 ; 更新DX中的进位信息
|
||||
|
||||
MOV WORD PTR ZZZ, AX ; ZZZ的低位 = AX = 16 * XXX + YYY
|
||||
MOV WORD PTR ZZZ+2, DX ; ZZZ的高位 = DX = 进位数, ZZZ = 16 * XXX + YYY(完整)
|
||||
|
||||
MOV AH, 4CH
|
||||
INT 21H
|
||||
CSEG ENDS
|
||||
END START
|
||||
BIN
Lab/Lab1/material/21281280_柯劲帆_第1次实验报告.docx
Executable file
178
Lab/Lab1/material/21281280_柯劲帆_第1次实验报告.md
Executable file
@@ -0,0 +1,178 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 一、实验目的
|
||||
|
||||
1. 进一步学习汇编语言基本指令使用方法;
|
||||
2. 学习DEBUG调试工具的基本使用方法;掌握debug调试命令a、u、r、d、t、g等;
|
||||
3. 逐条观察程序指令的执行过程,理解指令的功能,理解程序自动、顺序地执行的概念,实践其过程(重点)。
|
||||
|
||||
# 二、实验内容
|
||||
|
||||
1. 编写、输入一个32位二进制数相加程序,逐条执行指令,观察指令执行情况。
|
||||
1. 使用已经过汇编和连接的小程序(t3-2.exe),将其装入内存,逐条执行指令,观察执行过程和结果。在实验过程中,使用E命令修改XXX和YYY单元中的数据,再重新计算其结果。
|
||||
|
||||
# 三、流程图
|
||||
|
||||
第一题:
|
||||
|
||||

|
||||
|
||||
# 四、实验过程与分析
|
||||
|
||||
第一题:
|
||||
|
||||
进入调试, -U
|
||||
|
||||

|
||||
|
||||
-T
|
||||
|
||||

|
||||
|
||||
载入数据段后:
|
||||
|
||||

|
||||
|
||||
程序执行完毕后:
|
||||
|
||||

|
||||
|
||||
第二题:
|
||||
|
||||
<img src="2-1.png" alt="2-1" style="zoom:50%;" />
|
||||
|
||||
修改后:
|
||||
|
||||
<img src="2-2.png" alt="2-2" style="zoom:50%;" />
|
||||
|
||||
最终:
|
||||
|
||||
<img src="2-3.png" alt="2-3" style="zoom:50%;" />
|
||||
|
||||
程序实际效果:计算a:b的物理地址。
|
||||
|
||||
# 五、实验总结
|
||||
|
||||
熟练掌握了各种指令以及调试步骤,收获颇丰。
|
||||
|
||||
# 六、思考题
|
||||
|
||||
> 程序中的指令、数据是如何在存储器中存储的?
|
||||
|
||||
分别在不同的段中按顺序存储
|
||||
|
||||
> 如何理解程序执行过程的顺序性?
|
||||
|
||||
程序按指令在代码段内存储的顺序执行。如需人为改变执行顺序,可以指定ip为要执行的指令的地址。
|
||||
|
||||
> 如何理解标志位寄存器中的数据?
|
||||
|
||||
标志寄存器在CPU内部,用于存储算术逻辑运算后的结果特征和控制CPU的工作方式或工作状态。
|
||||
|
||||
| 位数 | 符号 | 含义 |
|
||||
| :--: | :--: | :--------: |
|
||||
| 0 | CF | 进位标志 |
|
||||
| 2 | PF | 奇偶标志 |
|
||||
| 4 | AF | 半进位标志 |
|
||||
| 6 | ZF | 零标志 |
|
||||
| 7 | SF | 符号标志 |
|
||||
| 8 | TF | 溢出标志 |
|
||||
| 9 | IF | 方向标志 |
|
||||
| 10 | DF | 中断标志 |
|
||||
| 11 | OF | 跟踪标志 |
|
||||
|
||||
# 源代码附录
|
||||
|
||||
第一题:
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
NUM1 DD 11451400H ; 被加数
|
||||
NUM2 DD 19198100H ; 加数
|
||||
SUM DD ? ; 结果
|
||||
DATA ENDS
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
start:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
MOV AX, WORD PTR NUM1 ; 将NUM1低位赋给AX
|
||||
MOV WORD PTR SUM, AX ; 将AX赋给SUM低位(MOV指令不能直接在两个内存单元间赋值)
|
||||
MOV AX, WORD PTR NUM2 ; 将NUM2低位赋给AX
|
||||
ADD WORD PTR SUM, AX ; 将AX加到SUM的低位上
|
||||
|
||||
MOV AX, WORD PTR NUM1+2 ; 将NUM1高位赋给AX
|
||||
ADC WORD PTR SUM+2, AX ; ADC(Add with Carry)将AX加到SUM的高位(初始为零)上,再加上CF存着的低位进位
|
||||
MOV AX, WORD PTR NUM2+2 ; 将NUM2高位赋给AX
|
||||
ADD WORD PTR SUM+2, AX ; 将AX加到SUM的高位上
|
||||
MOV AH, 4CH ; 退出程序
|
||||
INT 21H
|
||||
CODE ENDS
|
||||
END start
|
||||
```
|
||||
|
||||
第二题:
|
||||
|
||||
```assembly
|
||||
DSEG SEGMENT
|
||||
XXX DW 1234H
|
||||
YYY DW 5678H
|
||||
ZZZ DD ?
|
||||
DSEG ENDS
|
||||
|
||||
CSEG SEGMENT
|
||||
ASSUME CS:CSEG, DS:DSEG
|
||||
START:
|
||||
MOV AX, DSEG
|
||||
MOV DS, AX
|
||||
|
||||
MOV AX, XXX ; 将XXX赋给AX
|
||||
XOR DX, DX ; 异或DX和DX,即将DX置0
|
||||
|
||||
ADD AX, AX ; AX *= 2, AX = 2 * XXX
|
||||
ADC DX, 0 ; 把进位保存在DX中
|
||||
|
||||
ADD AX, AX ; AX *= 2, AX = 4 * XXX
|
||||
ADC DX, 0 ; 更新DX中的进位信息
|
||||
|
||||
ADD AX, AX ; AX *= 2, AX = 8 * XXX
|
||||
ADC DX, 0 ; 更新DX中的进位信息
|
||||
|
||||
ADD AX, AX ; AX *= 2, AX = 16 * XXX
|
||||
ADC DX, 0 ; 更新DX中的进位信息
|
||||
|
||||
ADD AX, YYY ; AX += YYY, AX = 16 * XXX + YYY
|
||||
ADC DX, 0 ; 更新DX中的进位信息
|
||||
|
||||
MOV WORD PTR ZZZ, AX ; ZZZ的低位 = AX = 16 * XXX + YYY
|
||||
MOV WORD PTR ZZZ+2, DX ; ZZZ的高位 = DX = 进位数, ZZZ = 16 * XXX + YYY(完整)
|
||||
|
||||
MOV AH, 4CH
|
||||
INT 21H
|
||||
CSEG ENDS
|
||||
END START
|
||||
|
||||
```
|
||||
|
||||
BIN
Lab/Lab1/material/21281280_柯劲帆_第1次实验报告.pdf
Executable file
BIN
Lab/Lab1/material/cover.png
Executable file
|
After Width: | Height: | Size: 199 KiB |
43
Lab/Lab1/material/graph1.drawio
Executable file
@@ -0,0 +1,43 @@
|
||||
<mxfile host="Electron" modified="2023-04-02T07:41:48.312Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.1.2 Chrome/106.0.5249.199 Electron/21.4.3 Safari/537.36" etag="5hIqR4LNWa8fX__H5m1n" version="21.1.2" type="device">
|
||||
<diagram name="第 1 页" id="5szQxJ_d8_ub9XAW-9oE">
|
||||
<mxGraphModel dx="1001" dy="744" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NDtPPReygzJqEH5N9WcK-1" target="NDtPPReygzJqEH5N9WcK-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-1" value="载入数据段" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="240" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NDtPPReygzJqEH5N9WcK-2" target="NDtPPReygzJqEH5N9WcK-3">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-2" value="将NUM1和NUM2的低字段内容相加填入SUM的低字段" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="340" y="320" width="160" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NDtPPReygzJqEH5N9WcK-3" target="NDtPPReygzJqEH5N9WcK-4">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-3" value="将NUM1的高字段内容与上次相加结果的进位相加填入SUM的高字段" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="320.5" y="400" width="199" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NDtPPReygzJqEH5N9WcK-4" target="NDtPPReygzJqEH5N9WcK-9">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-4" value="将NUM2的高字段内容与SUM的高字段内容相加填入SUM的高字段" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="320.5" y="480" width="200" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-9" value="结束程序" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="560" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NDtPPReygzJqEH5N9WcK-10" target="NDtPPReygzJqEH5N9WcK-1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="NDtPPReygzJqEH5N9WcK-10" value="开始执行程序段" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="160" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
4
Lab/Lab1/material/graph1.drawio.svg
Executable file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
Lab/Lab1/实验1 debug调试环境.doc
Executable file
BIN
Lab/Lab1/开发环境建立和DEBUG调试工具介绍.pdf
Executable file
BIN
Lab/Lab2/21281280_柯劲帆_第2次实验_查找字符.zip
Executable file
BIN
Lab/Lab2/21281280_柯劲帆_第2次实验_查找字符/21281280_柯劲帆_实验2报告.pdf
Executable file
55
Lab/Lab2/21281280_柯劲帆_第2次实验_查找字符/code.asm
Executable file
@@ -0,0 +1,55 @@
|
||||
DATA SEGMENT
|
||||
CHAR DB 'A'
|
||||
HINT1 DB 'Please enter a string: $'
|
||||
HINT2 DB 10, 27H, 'A', 27H, ' occured time: $'
|
||||
TIMES DB 0
|
||||
MAXLEN DB 100
|
||||
LEN DB 0
|
||||
TABLE DB 100 DUP (0)
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
MOV AH, 9
|
||||
MOV DX, OFFSET HINT1
|
||||
INT 21H
|
||||
|
||||
LEA DX, MAXLEN
|
||||
MOV AH, 0AH
|
||||
INT 21H
|
||||
|
||||
CALL CNT
|
||||
MOV AH, 9
|
||||
MOV DX, OFFSET HINT2
|
||||
INT 21H
|
||||
|
||||
MOV AL, TIMES
|
||||
ADD AL, '0'
|
||||
MOV DL, AL
|
||||
MOV AH, 02
|
||||
INT 21H
|
||||
|
||||
MOV AH,4CH
|
||||
INT 21H
|
||||
|
||||
CNT PROC NEAR
|
||||
MOV CX, 0
|
||||
MOV CL, LEN
|
||||
MOV SI, -1
|
||||
MOV AL, CHAR
|
||||
LP:
|
||||
INC SI
|
||||
CMP AL, TABLE[SI]
|
||||
JNZ BACK
|
||||
INC TIMES
|
||||
BACK:
|
||||
LOOP LP
|
||||
RET
|
||||
CNT ENDP
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
105
Lab/Lab2/material/.$graph.drawio.bkp
Executable file
@@ -0,0 +1,105 @@
|
||||
<mxfile host="Electron" modified="2023-04-11T14:21:32.543Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.1.2 Chrome/106.0.5249.199 Electron/21.4.3 Safari/537.36" etag="QNq7u-1bCWMLLsHMlqsS" version="21.1.2" type="device">
|
||||
<diagram name="第 1 页" id="Hp0mWjxMjnIu5b5PPHpT">
|
||||
<mxGraphModel dx="1098" dy="820" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-1" target="Hisepnijn4ny8SH6L1L8-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-1" value="程序开始" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="280" y="320" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-2" target="Hisepnijn4ny8SH6L1L8-3">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-2" value="载入数据段" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-3" target="Hisepnijn4ny8SH6L1L8-4">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-3" value="输出提示信息" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="280" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-4" target="Hisepnijn4ny8SH6L1L8-37">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-4" value="读取字符串" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-6" target="Hisepnijn4ny8SH6L1L8-17">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-6" value="将字符串当前位数加1" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="720" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-11" value="N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-10" target="Hisepnijn4ny8SH6L1L8-6">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-46" value="Y" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-10" target="Hisepnijn4ny8SH6L1L8-37">
|
||||
<mxGeometry x="-0.8824" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-10" value="循环次数是否用尽?" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="640" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-19" value="Y" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-17" target="Hisepnijn4ny8SH6L1L8-20">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="440" y="740" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-49" value="N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-17" target="Hisepnijn4ny8SH6L1L8-10">
|
||||
<mxGeometry x="-0.9167" relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="340" y="800" />
|
||||
<mxPoint x="80" y="800" />
|
||||
<mxPoint x="80" y="660" />
|
||||
</Array>
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-17" value="字符串的当前位与指定字符比较是否一样" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="280" y="720" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-50" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-20" target="Hisepnijn4ny8SH6L1L8-10">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="500" y="800" />
|
||||
<mxPoint x="80" y="800" />
|
||||
<mxPoint x="80" y="660" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-20" value="结果加1" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="720" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-25" target="Hisepnijn4ny8SH6L1L8-27">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-25" value="输出答案" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="480" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-27" value="程序结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="560" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-28" target="Hisepnijn4ny8SH6L1L8-10">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-28" value="指定循环次数为字符串长度" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="560" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-37" target="Hisepnijn4ny8SH6L1L8-28">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-37" target="Hisepnijn4ny8SH6L1L8-25">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-37" value="调用CNT子程序" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="200" y="480" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
105
Lab/Lab2/material/.$graph.drawio.dtmp
Executable file
@@ -0,0 +1,105 @@
|
||||
<mxfile host="Electron" modified="2023-04-11T14:22:21.464Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.1.2 Chrome/106.0.5249.199 Electron/21.4.3 Safari/537.36" etag="kXFsj5GcRiazvZ2mTRHP" version="21.1.2" type="device">
|
||||
<diagram name="第 1 页" id="Hp0mWjxMjnIu5b5PPHpT">
|
||||
<mxGraphModel dx="1098" dy="820" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-1" target="Hisepnijn4ny8SH6L1L8-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-1" value="程序开始" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="280" y="320" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-2" target="Hisepnijn4ny8SH6L1L8-3">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-2" value="载入数据段" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-3" target="Hisepnijn4ny8SH6L1L8-4">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-3" value="输出提示信息" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="280" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-4" target="Hisepnijn4ny8SH6L1L8-37">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-4" value="读取字符串" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-6" target="Hisepnijn4ny8SH6L1L8-17">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-6" value="将字符串当前位数加1" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="720" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-11" value="N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-10" target="Hisepnijn4ny8SH6L1L8-6">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-46" value="Y" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-10" target="Hisepnijn4ny8SH6L1L8-37">
|
||||
<mxGeometry x="-0.8824" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-10" value="循环次数是否用尽?" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="640" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-19" value="Y" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-17" target="Hisepnijn4ny8SH6L1L8-20">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="440" y="740" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-49" value="N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-17" target="Hisepnijn4ny8SH6L1L8-10">
|
||||
<mxGeometry x="-0.9167" relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="340" y="800" />
|
||||
<mxPoint x="80" y="800" />
|
||||
<mxPoint x="80" y="660" />
|
||||
</Array>
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-17" value="字符串的当前位与指定字符比较是否一样" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="280" y="720" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-50" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-20" target="Hisepnijn4ny8SH6L1L8-10">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="500" y="800" />
|
||||
<mxPoint x="80" y="800" />
|
||||
<mxPoint x="80" y="660" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-20" value="结果加1" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="720" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-25" target="Hisepnijn4ny8SH6L1L8-27">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-25" value="输出答案" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="480" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-27" value="程序结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="560" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-28" target="Hisepnijn4ny8SH6L1L8-10">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-28" value="指定循环次数为字符串长度" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="560" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-37" target="Hisepnijn4ny8SH6L1L8-28">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-37" target="Hisepnijn4ny8SH6L1L8-25">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-37" value="调用CNT子程序" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="200" y="480" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
BIN
Lab/Lab2/material/1.png
Executable file
|
After Width: | Height: | Size: 18 KiB |
BIN
Lab/Lab2/material/2.png
Executable file
|
After Width: | Height: | Size: 9.5 KiB |
155
Lab/Lab2/material/21281280_柯劲帆_实验2报告.md
Executable file
@@ -0,0 +1,155 @@
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 一、实验目的
|
||||
|
||||
1. 了解汇编语言子程序的概念。
|
||||
2. 掌握汇编语言子程序的定义、调用和返回。
|
||||
3. 掌握设计汇编语言子程序及过程的基本方法。
|
||||
4. 清楚调用指令CALL及返回指令RET执行时堆栈内容及指针的变化。
|
||||
5. 掌握子程序和主程序间的参数传递方法。
|
||||
|
||||
# 二、实验内容
|
||||
|
||||
试编写一个有主程序和子程序结构的程序模块。
|
||||
|
||||
主程序:要求从键盘接收一串字符并存于字节数组TABLE中,显示字符CHAR出现的次数。
|
||||
|
||||
子程序:在以TABLE为首地址的字节数组中查找CHAR,统计出现的次数。
|
||||
|
||||
# 三、流程图
|
||||
|
||||

|
||||
|
||||
# 四、实验过程与分析
|
||||
|
||||

|
||||
|
||||
将源代码放入MASM路径下,编译。
|
||||
|
||||
没有警告和报错。
|
||||
|
||||

|
||||
|
||||
LINK链接程序。
|
||||
|
||||

|
||||
|
||||
出现提示信息。
|
||||
|
||||

|
||||
|
||||
输入字符串,按下回车。
|
||||
|
||||
程序打印出指定字符“**A**”出现的次数。
|
||||
|
||||
# 五、实验总结
|
||||
|
||||
在本实验中,我了解了汇编语言子程序的概念,掌握了汇编语言子程序的定义、调用和返回,以及设计汇编语言子程序及过程的基本方法。
|
||||
|
||||
# 六、思考题
|
||||
|
||||
> 子程序和主程序之间的参数传递是通过什么方式实现的?
|
||||
|
||||
通常情况下,主、子程序之间传递参数可以通过以下四种方式实现:
|
||||
|
||||
1. 寄存器传送参数
|
||||
2. 存储单元传送参数
|
||||
3. 堆栈传送参数或参数地址
|
||||
4. 多模块之间的参数传递
|
||||
|
||||
**本实验程序使用寄存器传递参数。**
|
||||
|
||||
> 在DEBUG环境下观察执行CALL指令时CS、IP寄存器是否变化。
|
||||
|
||||

|
||||
|
||||
执行CALL指令的时候
|
||||
|
||||
- 如果是段内近调用,不会改变CS,但是IP会改变。(本实验程序是这种情况,如图所示可见CS不变,IP变)
|
||||
- 如果是远调用,CS和IP都会改变。
|
||||
|
||||
> 在DEBUG环境下观察执行CALL、RET时堆栈的变化。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
由执行CALL前后SP值的变化和对应地址记录的值,可知由于是近调用,将IP压入栈中记录,SP记录了要返回的IP=0017H。
|
||||
|
||||
(由于DEBUG环境无法输入字符串,很难观测RET指令执行时的情况。实际上RET时,SP会回退,原来CS和IP的值会退栈,然后赋值给当前的CS和IP。)
|
||||
|
||||
# 源代码附录
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
CHAR DB 'A'
|
||||
HINT1 DB 'Please enter a string: $'
|
||||
HINT2 DB 10, 27H, 'A', 27H, ' occured time: $'
|
||||
TIMES DB 0
|
||||
MAXLEN DB 100
|
||||
LEN DB 0
|
||||
TABLE DB 100 DUP (0)
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
MOV DX, OFFSET HINT1 ; 将HINT1的偏移地址赋给DX准备输出
|
||||
MOV AH, 9 ; 输出
|
||||
INT 21H
|
||||
|
||||
LEA DX, MAXLEN ; 0AH功能会获取DS:[DX](已定义为MAXLEN)作为输入缓冲区最大容量
|
||||
MOV AH, 0AH ; 调用0AH功能,将输入的字符串长度存入DS:[DX+1](已定义为LEN)
|
||||
INT 21H ; 将字符串存入从DS:DX+2开始的空间(已定义为TABLE)
|
||||
|
||||
CALL CNT ; 统计字符“A”的数量,结果在TIMES中
|
||||
MOV DX, OFFSET HINT2 ; 将HINT2的偏移地址赋给DX准备输出
|
||||
MOV AH, 9 ; 输出
|
||||
INT 21H
|
||||
|
||||
MOV AL, TIMES
|
||||
ADD AL, '0' ; TIMES += '0' (将数字信息转换成字符)
|
||||
MOV DL, AL
|
||||
MOV AH, 02H ; 显示单个字符
|
||||
INT 21H
|
||||
|
||||
MOV AH,4CH
|
||||
INT 21H
|
||||
|
||||
CNT PROC NEAR
|
||||
MOV CX, 0
|
||||
MOV CL, LEN
|
||||
MOV SI, -1 ; SI是遍历TABLE的下标
|
||||
MOV AL, CHAR ; 要比较的字符移到AL中(CMP不能比较两个内存单元)
|
||||
LP:
|
||||
INC SI
|
||||
CMP AL, TABLE[SI]
|
||||
JNE BACK ; 不相等则跳过INC TIMES,重新循环
|
||||
INC TIMES
|
||||
BACK:
|
||||
LOOP LP ; LOOP先将CX -= 1,然后判断是否为0,为0就退出循环
|
||||
RET
|
||||
CNT ENDP
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
```
|
||||
|
||||
BIN
Lab/Lab2/material/21281280_柯劲帆_实验2报告.pdf
Executable file
BIN
Lab/Lab2/material/3.png
Executable file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
Lab/Lab2/material/4.png
Executable file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
Lab/Lab2/material/5.png
Executable file
|
After Width: | Height: | Size: 18 KiB |
BIN
Lab/Lab2/material/6.png
Executable file
|
After Width: | Height: | Size: 26 KiB |
BIN
Lab/Lab2/material/7.png
Executable file
|
After Width: | Height: | Size: 29 KiB |
56
Lab/Lab2/material/code.asm
Executable file
@@ -0,0 +1,56 @@
|
||||
DATA SEGMENT
|
||||
CHAR DB 'A'
|
||||
HINT1 DB 'Please enter a string: $'
|
||||
HINT2 DB 10, 27H, 'A', 27H, ' occured time: $'
|
||||
TIMES DB 0
|
||||
MAXLEN DB 100
|
||||
LEN DB 0
|
||||
TABLE DB 100 DUP (0)
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
MOV DX, OFFSET HINT1 ; 将HINT1的偏移地址赋给DX准备输出
|
||||
MOV AH, 9 ; 输出
|
||||
INT 21H
|
||||
|
||||
LEA DX, MAXLEN ; 0AH功能会获取DS:[DX](已定义为MAXLEN)作为输入缓冲区最大容量
|
||||
MOV AH, 0AH ; 调用0AH功能,将输入的字符串长度存入DS:[DX+1](已定义为LEN)
|
||||
INT 21H ; 将字符串存入从DS:DX+2开始的空间(已定义为TABLE)
|
||||
|
||||
CALL CNT ; 统计字符“A”的数量,结果在TIMES中
|
||||
MOV DX, OFFSET HINT2 ; 将HINT2的偏移地址赋给DX准备输出
|
||||
MOV AH, 9 ; 输出
|
||||
INT 21H
|
||||
|
||||
MOV AL, TIMES
|
||||
ADD AL, '0' ; TIMES += '0' (将数字信息转换成字符)
|
||||
MOV DL, AL
|
||||
MOV AH, 02H ; 显示单个字符
|
||||
INT 21H
|
||||
|
||||
MOV AH,4CH
|
||||
INT 21H
|
||||
|
||||
CNT PROC NEAR
|
||||
MOV CX, 0
|
||||
MOV CL, LEN
|
||||
MOV SI, -1 ; SI是遍历TABLE的下标
|
||||
MOV AL, CHAR ; 要比较的字符移到AL中(CMP不能比较两个内存单元)
|
||||
LP:
|
||||
INC SI
|
||||
CMP AL, TABLE[SI]
|
||||
JNE BACK ; 不相等则跳过INC TIMES,重新循环
|
||||
INC TIMES
|
||||
BACK:
|
||||
LOOP LP ; LOOP先将CX -= 1,然后判断是否为0,为0就退出循环
|
||||
RET
|
||||
CNT ENDP
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
BIN
Lab/Lab2/material/cover.png
Executable file
|
After Width: | Height: | Size: 65 KiB |
105
Lab/Lab2/material/graph.drawio
Executable file
@@ -0,0 +1,105 @@
|
||||
<mxfile host="Electron" modified="2023-04-11T14:22:18.173Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.1.2 Chrome/106.0.5249.199 Electron/21.4.3 Safari/537.36" etag="ppF0kxKw4kt9IrtH2h0O" version="21.1.2" type="device">
|
||||
<diagram name="第 1 页" id="Hp0mWjxMjnIu5b5PPHpT">
|
||||
<mxGraphModel dx="1098" dy="820" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-1" target="Hisepnijn4ny8SH6L1L8-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-1" value="程序开始" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="280" y="320" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-2" target="Hisepnijn4ny8SH6L1L8-3">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-2" value="载入数据段" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-3" target="Hisepnijn4ny8SH6L1L8-4">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-3" value="输出提示信息" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="280" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-4" target="Hisepnijn4ny8SH6L1L8-37">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-4" value="读取字符串" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-6" target="Hisepnijn4ny8SH6L1L8-17">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-6" value="将字符串当前位数加1" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="720" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-11" value="N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-10" target="Hisepnijn4ny8SH6L1L8-6">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-46" value="Y" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-10" target="Hisepnijn4ny8SH6L1L8-37">
|
||||
<mxGeometry x="-0.8824" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-10" value="循环次数是否用尽?" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="640" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-19" value="Y" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-17" target="Hisepnijn4ny8SH6L1L8-20">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="440" y="740" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-49" value="N" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-17" target="Hisepnijn4ny8SH6L1L8-10">
|
||||
<mxGeometry x="-0.9167" relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="340" y="800" />
|
||||
<mxPoint x="80" y="800" />
|
||||
<mxPoint x="80" y="660" />
|
||||
</Array>
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-17" value="字符串的当前位与指定字符比较是否一样" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="280" y="720" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-50" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-20" target="Hisepnijn4ny8SH6L1L8-10">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="500" y="800" />
|
||||
<mxPoint x="80" y="800" />
|
||||
<mxPoint x="80" y="660" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-20" value="结果加1" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="720" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-25" target="Hisepnijn4ny8SH6L1L8-27">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-25" value="输出答案" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="480" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-27" value="程序结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="560" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-28" target="Hisepnijn4ny8SH6L1L8-10">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-28" value="指定循环次数为字符串长度" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="560" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-37" target="Hisepnijn4ny8SH6L1L8-28">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Hisepnijn4ny8SH6L1L8-37" target="Hisepnijn4ny8SH6L1L8-25">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Hisepnijn4ny8SH6L1L8-37" value="调用CNT子程序" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="200" y="480" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
4
Lab/Lab2/material/graph.drawio.svg
Executable file
|
After Width: | Height: | Size: 22 KiB |
BIN
Lab/Lab2/实验2 查找字符.doc
Executable file
BIN
Lab/Lab3/21281280_柯劲帆_第3次实验_8255A实验.zip
Executable file
BIN
Lab/Lab3/21281280_柯劲帆_第3次实验_8255A实验/21281280_柯劲帆_第3次实验_8255A实验.pdf
Executable file
BIN
Lab/Lab3/21281280_柯劲帆_第3次实验_8255A实验/任务一演示.mp4
Executable file
58
Lab/Lab3/material/.$task1.drawio.bkp
Executable file
@@ -0,0 +1,58 @@
|
||||
<mxfile host="Electron" modified="2023-05-06T14:49:58.247Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="gX_Ezp9wm0UEAzm5YIdF" version="21.2.8" type="device">
|
||||
<diagram name="第 1 页" id="3iH2U7M1F-pdt02PPPwc">
|
||||
<mxGraphModel dx="824" dy="768" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="LjnWuoztt-sNhJGu1yFB-1" target="LjnWuoztt-sNhJGu1yFB-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-1" value="程序开始" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="160" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="LjnWuoztt-sNhJGu1yFB-2" target="LjnWuoztt-sNhJGu1yFB-3">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-2" value="向命令口发送命令,将PA口置为1方式输入,PB口置为0方式输出" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="320" y="240" width="200" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="LjnWuoztt-sNhJGu1yFB-3" target="LjnWuoztt-sNhJGu1yFB-4">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-3" value="将PB口输出全零,灭掉所有LED灯" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="320" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="LjnWuoztt-sNhJGu1yFB-4" target="LjnWuoztt-sNhJGu1yFB-5">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-4" value="通过PA口获取各个开关状态到AL" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="LjnWuoztt-sNhJGu1yFB-5" target="LjnWuoztt-sNhJGu1yFB-6">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-5" value="向PB口输出AL" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="480" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="LjnWuoztt-sNhJGu1yFB-6" target="LjnWuoztt-sNhJGu1yFB-7">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-6" value="进入延时子程序,延时一小段时间" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="560" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="LjnWuoztt-sNhJGu1yFB-7" target="LjnWuoztt-sNhJGu1yFB-5">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="420" y="700" />
|
||||
<mxPoint x="320" y="700" />
|
||||
<mxPoint x="320" y="500" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-7" value="使用ROR指令AL向右移一位" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="640" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
58
Lab/Lab3/material/.$task1.drawio.dtmp
Executable file
@@ -0,0 +1,58 @@
|
||||
<mxfile host="Electron" modified="2023-05-06T15:21:41.040Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="wLXNmcTcuL1nMTwf1z0g" version="21.2.8" type="device">
|
||||
<diagram name="第 1 页" id="3iH2U7M1F-pdt02PPPwc">
|
||||
<mxGraphModel dx="841" dy="768" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-1" target="LjnWuoztt-sNhJGu1yFB-2" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-1" value="程序开始" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="160" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-2" target="LjnWuoztt-sNhJGu1yFB-3" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-2" value="向命令口发送命令,将PA口置为0方式输入,PB口置为0方式输出" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="320" y="240" width="200" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-3" target="LjnWuoztt-sNhJGu1yFB-4" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-3" value="将PB口输出全零,灭掉所有LED灯" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="320" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-4" target="LjnWuoztt-sNhJGu1yFB-5" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-4" value="通过PA口获取各个开关状态到AL" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-5" target="LjnWuoztt-sNhJGu1yFB-6" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-5" value="向PB口输出AL" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="480" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-6" target="LjnWuoztt-sNhJGu1yFB-7" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-6" value="进入延时子程序,延时一小段时间" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="560" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-7" target="LjnWuoztt-sNhJGu1yFB-5" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="420" y="700" />
|
||||
<mxPoint x="320" y="700" />
|
||||
<mxPoint x="320" y="500" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-7" value="使用ROR指令AL向右移一位" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="640" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
240
Lab/Lab3/material/21281280_柯劲帆_第3次实验_8255A实验.md
Executable file
@@ -0,0 +1,240 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h1><center><strong>实验二 利用8255A实现LED的流水点亮实验</strong></center></h1>
|
||||
|
||||
### 一、实验目的
|
||||
|
||||
该实验的目的在于掌握8255A和微机接口的连接方法,了解8255A的基本的工作原理和编程方法。
|
||||
|
||||
### 二、实验内容
|
||||
|
||||
**任务一:**PA口接8个拨动开关K1-K8,PB口接8个LED。初始由开关K1-K8设定8位不同的值,当执行程序后LED按K1-K8初始设定的值点亮,并向右流动(8255A工作在0方式)。
|
||||
|
||||
**任务二:**在数码管上显示“8255-A”。
|
||||
|
||||
### 三、流程图
|
||||
|
||||
**任务一:**
|
||||
|
||||

|
||||
|
||||
**任务二:**
|
||||
|
||||

|
||||
|
||||
### 四、实验过程与分析
|
||||
|
||||
**任务一:**
|
||||
|
||||
首先在实验箱中将接线连好。将8255A芯片的CS连到280H地址。因此命令口为283H,PA口为280H,PB口为281H,PC口为282H。
|
||||
|
||||
将PA口连到开关上,PB口连到LED灯上。
|
||||
|
||||
然后设置好开关。将代码编译后运行。运行效果如视频所示。
|
||||
|
||||
**任务二:**
|
||||
|
||||
首先在实验箱中将接线连好。将8255A芯片的CS连到280H地址。将PA口连到位码接口上,PB口连到段码接口上。
|
||||
|
||||
<img src="task2.jpg" alt="task2" style="zoom:25%;" />
|
||||
|
||||
将代码编译后运行。运行效果如图所示。
|
||||
|
||||
### 五、实验总结
|
||||
|
||||
在本实验中,我掌握了8255A和微机接口的连接方法,了解了8255A的基本的工作原理和编程方法,收获颇丰。
|
||||
|
||||
### 六、思考题
|
||||
|
||||
> 在本实验的硬件电路中,能使用C口对LED指示灯控制码?如果可以写出2种控制方法(编程方法)。
|
||||
|
||||
**控制方法一:**使用命令口直接将PC口置位。
|
||||
|
||||
```assembly
|
||||
MOV DX, 283H ; 设置命令口
|
||||
MOV AL, 00000101B ; 0|xxx|010(指定PC2引脚)|1(置位)
|
||||
OUT DX, AL ; 输出
|
||||
```
|
||||
|
||||
**控制方法二:**使用方式0,将PC口置为数据输出口。
|
||||
|
||||
```assembly
|
||||
MOV DX, 283H
|
||||
MOV AL, 10000000B ; 1|00(A组0方式)|0(PA输入)|0(PC4-7输出)|0(B组0方式)|0(PB输出)|0(PC0-3输出)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 282H
|
||||
MOV AL, 00000001B ; PC1为高电平
|
||||
OUT DX, AL
|
||||
```
|
||||
|
||||
### 源代码附录
|
||||
|
||||
**任务一:**
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
T DW 0FFH
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10010000B ; 1|00(A组0方式)|1(PA输入)|0(PC4-7输出)|0(B组0方式)|0(PB输出)|0(PC0-3输出)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 281H ; B口
|
||||
MOV AL, 00H ; LED全置0
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 280H ; A口
|
||||
IN AL, DX ; 读入到AL
|
||||
|
||||
MOV DX, 281H ; B口
|
||||
LP:
|
||||
OUT DX, AL ; 从B口输出AL
|
||||
CALL DELAY ; 延时
|
||||
ROR AL, 1 ; ROR(Rotate Right)把AL向右移1位,移出的位补到左边,实现走马灯
|
||||
JMP LP ; 无限循环
|
||||
|
||||
DELAY PROC
|
||||
PUSH BX
|
||||
PUSH AX
|
||||
MOV BX, T
|
||||
MOV AX, T
|
||||
DL1:
|
||||
DL2:
|
||||
DEC BX
|
||||
JNZ DL1
|
||||
DEC AX
|
||||
JNZ DL2
|
||||
POP AX
|
||||
POP BX
|
||||
RET
|
||||
DELAY ENDP
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
```
|
||||
|
||||
**任务二:**
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
EIGHT DB 7FH
|
||||
TWO DB 5BH
|
||||
FIVE DB 6DH
|
||||
BAR DB 40H
|
||||
A DB 77H
|
||||
T DW 0FFH
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10000000B ; 1|00(A组0方式)|0(PA输出)|0(PC4-7输出)|0(B组0方式)|0(PB输出)|0(PC0-3输出)
|
||||
OUT DX, AL
|
||||
|
||||
|
||||
LP:
|
||||
MOV DX, 280H ; A口,控制位码
|
||||
MOV AL, 10000000B ; 第1位,PA1置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H ; B口,控制段码
|
||||
MOV AL, EIGHT ; 输出数据段定义的字符“8”
|
||||
OUT DX, AL
|
||||
CALL DELAY ; 延时后清零
|
||||
|
||||
MOV DX, 280H
|
||||
MOV AL, 01000000B ; 第2位,PA2置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, TWO ; 输出数据段定义的字符“2”
|
||||
OUT DX, AL
|
||||
CALL DELAY
|
||||
|
||||
MOV DX, 280H
|
||||
MOV AL, 00100000B ; 第3位,PA3置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, FIVE ; 输出数据段定义的字符“5”
|
||||
OUT DX, AL
|
||||
CALL DELAY
|
||||
|
||||
MOV DX, 280H
|
||||
MOV AL, 00010000B ; 第4位,PA4置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, FIVE ; 输出数据段定义的字符“5”
|
||||
OUT DX, AL
|
||||
CALL DELAY
|
||||
|
||||
MOV DX, 280H
|
||||
MOV AL, 00001000B ; 第5位,PA5置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, BAR ; 输出数据段定义的字符“-”
|
||||
OUT DX, AL
|
||||
CALL DELAY
|
||||
|
||||
MOV DX, 280H
|
||||
MOV AL, 00000100B ; 第6位,PA6置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, A ; 输出数据段定义的字符“A”
|
||||
OUT DX, AL
|
||||
CALL DELAY
|
||||
|
||||
JMP LP ; 无限循环
|
||||
|
||||
DELAY PROC
|
||||
PUSH BX
|
||||
MOV BX, T
|
||||
DL1:
|
||||
DEC BX
|
||||
JNZ DL1
|
||||
POP BX
|
||||
; 将位码段码都置0,否则前一位显示的字符会在显示下一位字符显示前在该位上显示
|
||||
MOV DX, 280H
|
||||
MOV AL, 00000000B
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, 0
|
||||
OUT DX, AL
|
||||
|
||||
RET
|
||||
DELAY ENDP
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
```
|
||||
BIN
Lab/Lab3/material/21281280_柯劲帆_第3次实验_8255实验.pdf
Executable file
BIN
Lab/Lab3/material/cover.png
Executable file
|
After Width: | Height: | Size: 61 KiB |
58
Lab/Lab3/material/task1.drawio
Executable file
@@ -0,0 +1,58 @@
|
||||
<mxfile host="Electron" modified="2023-05-06T15:21:40.345Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="wTuHmDiwrehiRT4wOHhQ" version="21.2.8" type="device">
|
||||
<diagram name="第 1 页" id="3iH2U7M1F-pdt02PPPwc">
|
||||
<mxGraphModel dx="841" dy="768" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-1" target="LjnWuoztt-sNhJGu1yFB-2" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-1" value="程序开始" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="160" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-2" target="LjnWuoztt-sNhJGu1yFB-3" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-2" value="向命令口发送命令,将PA口置为0方式输入,PB口置为0方式输出" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="320" y="240" width="200" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-3" target="LjnWuoztt-sNhJGu1yFB-4" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-3" value="将PB口输出全零,灭掉所有LED灯" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="320" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-4" target="LjnWuoztt-sNhJGu1yFB-5" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-4" value="通过PA口获取各个开关状态到AL" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-5" target="LjnWuoztt-sNhJGu1yFB-6" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-5" value="向PB口输出AL" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="480" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-6" target="LjnWuoztt-sNhJGu1yFB-7" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-6" value="进入延时子程序,延时一小段时间" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="560" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="LjnWuoztt-sNhJGu1yFB-7" target="LjnWuoztt-sNhJGu1yFB-5" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="420" y="700" />
|
||||
<mxPoint x="320" y="700" />
|
||||
<mxPoint x="320" y="500" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="LjnWuoztt-sNhJGu1yFB-7" value="使用ROR指令AL向右移一位" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="360" y="640" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
4
Lab/Lab3/material/task1.drawio.svg
Executable file
|
After Width: | Height: | Size: 12 KiB |
BIN
Lab/Lab3/material/task1.jpg
Executable file
|
After Width: | Height: | Size: 6.1 MiB |
BIN
Lab/Lab3/material/task1/code.EXE
Executable file
80
Lab/Lab3/material/task1/code.LST
Executable file
@@ -0,0 +1,80 @@
|
||||
Turbo Assembler Version 5.3 05-06-23 19:07:51 Page 1
|
||||
code.asm
|
||||
|
||||
|
||||
|
||||
1 0000 DATA SEGMENT
|
||||
2 0000 00FF T DW 0FFH
|
||||
3 0002 DATA ENDS
|
||||
4
|
||||
5 0000 CODE SEGMENT
|
||||
6 ASSUME CS:CODE,DS:DATA
|
||||
7
|
||||
8 0000 START:
|
||||
9 0000 B8 0000s MOV AX,DATA
|
||||
10 0003 8E D8 MOV DS,AX
|
||||
11
|
||||
12 0005 BA 0283 MOV DX, 283H
|
||||
13 0008 B0 B1 MOV AL, 0B1H
|
||||
14 000A EE OUT DX, AL
|
||||
15
|
||||
16 000B BA 0281 MOV DX, 281H
|
||||
17 000E B0 00 MOV AL, 00H
|
||||
18 0010 EE OUT DX, AL
|
||||
19
|
||||
20 0011 BA 0280 MOV DX, 280H
|
||||
21 0014 EC IN AL, DX
|
||||
22
|
||||
23 0015 BA 0281 MOV DX, 281H
|
||||
24 0018 LP:
|
||||
25 0018 EE OUT DX, AL
|
||||
26 0019 E8 0004 CALL DELAY
|
||||
27 001C D0 C8 ROR AL, 1
|
||||
28 001E EB F8 JMP LP
|
||||
29
|
||||
30 0020 DELAY PROC
|
||||
31 0020 53 PUSH BX
|
||||
32 0021 50 PUSH AX
|
||||
33 0022 8B 1E 0000r MOV BX, T
|
||||
34 0026 A1 0000r MOV AX, T
|
||||
35 0029 DL1:
|
||||
36 0029 DL2:
|
||||
37 0029 4B DEC BX
|
||||
38 002A 75 FD JNZ DL1
|
||||
39 002C 48 DEC AX
|
||||
40 002D 75 FA JNZ DL2
|
||||
41 002F 58 POP AX
|
||||
42 0030 5B POP BX
|
||||
43 0031 C3 RET
|
||||
44 0032 DELAY ENDP
|
||||
45
|
||||
46 0032 CODE ENDS
|
||||
47 END START
|
||||
Turbo Assembler Version 5.3 05-06-23 19:07:51 Page 2
|
||||
Symbol Table
|
||||
|
||||
|
||||
|
||||
|
||||
Symbol Name Type Value
|
||||
|
||||
??DATE Text "05-06-23"
|
||||
??FILENAME Text "code "
|
||||
??TIME Text "19:07:51"
|
||||
??VERSION Number 0503
|
||||
@CPU Text 0101H
|
||||
@CURSEG Text CODE
|
||||
@FILENAME Text CODE
|
||||
@WORDSIZE Text 2
|
||||
DELAY Near16 CODE:0020
|
||||
DL1 Near16 CODE:0029
|
||||
DL2 Near16 CODE:0029
|
||||
LP Near16 CODE:0018
|
||||
START Near16 CODE:0000
|
||||
T Word DATA:0000
|
||||
|
||||
Groups & Segments Bit Size Align Combine Class
|
||||
|
||||
CODE 16 0032 Para none
|
||||
DATA 16 0002 Para none
|
||||
|
||||
7
Lab/Lab3/material/task1/code.MAP
Executable file
@@ -0,0 +1,7 @@
|
||||
LINK : warning L4021: no stack segment
|
||||
|
||||
Start Stop Length Name Class
|
||||
00000H 00001H 00002H DATA
|
||||
00010H 00041H 00032H CODE
|
||||
|
||||
Program entry point at 0001:0000
|
||||
BIN
Lab/Lab3/material/task1/code.OBJ
Executable file
47
Lab/Lab3/material/task1/code.asm
Executable file
@@ -0,0 +1,47 @@
|
||||
DATA SEGMENT
|
||||
T DW 0FFH
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10010000B ; 1|00(A组0方式)|1(PA输入)|0(PC4-7输出)|0(B组0方式)|0(PB输出)|0(PC0-3输出)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 281H ; B口
|
||||
MOV AL, 00H ; LED全置0
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 280H ; A口
|
||||
IN AL, DX ; 读入到AL
|
||||
|
||||
MOV DX, 281H ; B口
|
||||
LP:
|
||||
OUT DX, AL ; 从B口输出AL
|
||||
CALL DELAY ; 延时
|
||||
ROR AL, 1 ; ROR(Rotate Right)把AL向右移1位,移出的位补到左边,实现走马灯
|
||||
JMP LP ; 无限循环
|
||||
|
||||
DELAY PROC
|
||||
PUSH BX
|
||||
PUSH AX
|
||||
MOV BX, T
|
||||
MOV AX, T
|
||||
DL1:
|
||||
DL2:
|
||||
DEC BX
|
||||
JNZ DL1
|
||||
DEC AX
|
||||
JNZ DL2
|
||||
POP AX
|
||||
POP BX
|
||||
RET
|
||||
DELAY ENDP
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
94
Lab/Lab3/material/task2.drawio
Executable file
@@ -0,0 +1,94 @@
|
||||
<mxfile host="Electron" modified="2023-05-06T15:06:22.200Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="KfPBfSVlkAzQTw9RaeJu" version="21.2.8" type="device">
|
||||
<diagram name="第 1 页" id="Gbocf1ZR2_vZdg_gzSWu">
|
||||
<mxGraphModel dx="841" dy="768" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-1" target="araScAr63CeZQoxgV5Wy-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-1" value="程序开始" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="80" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-2" target="araScAr63CeZQoxgV5Wy-3">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-2" value="向命令口发送命令,将PA口和PB口全部置为0方式输出" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="320" y="160" width="200" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-3" target="araScAr63CeZQoxgV5Wy-4">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-3" value="从PA口输出位码10000000B控制数码管第1位显示字符" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="320" y="240" width="200" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-4" target="araScAr63CeZQoxgV5Wy-9">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-4" value="从PB口输出段码控制数码管显示字符“8”" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="320" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-9" target="araScAr63CeZQoxgV5Wy-10">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-9" value="进入延时子程序" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-10" target="araScAr63CeZQoxgV5Wy-22">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-10" value="循环延时" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="600" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-22" target="araScAr63CeZQoxgV5Wy-23">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-22" value="从PA口输出,将位码置0,控制数码管不显示" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="560" y="480" width="200" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-23" target="araScAr63CeZQoxgV5Wy-9">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="660" y="620" />
|
||||
<mxPoint x="540" y="620" />
|
||||
<mxPoint x="540" y="430" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-23" value="从PB口输出,将段码置0,控制数码管不显示字符" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="560" y="560" width="200" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-26" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-28" target="araScAr63CeZQoxgV5Wy-9">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="240" y="540" as="sourcePoint" />
|
||||
<mxPoint x="290" y="490" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-28" target="araScAr63CeZQoxgV5Wy-29">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-28" value="从PA口输出位码00000100B控制数码管第6位显示字符" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="320" y="560" width="200" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-29" target="araScAr63CeZQoxgV5Wy-32">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-29" value="从PB口输出段码控制数码管显示字符“A”" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="640" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="araScAr63CeZQoxgV5Wy-32" target="araScAr63CeZQoxgV5Wy-3">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="420" y="800" />
|
||||
<mxPoint x="280" y="800" />
|
||||
<mxPoint x="280" y="260" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="araScAr63CeZQoxgV5Wy-32" value="进入延时子程序" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="720" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
4
Lab/Lab3/material/task2.drawio.svg
Executable file
|
After Width: | Height: | Size: 17 KiB |
BIN
Lab/Lab3/material/task2.jpg
Executable file
|
After Width: | Height: | Size: 3.4 MiB |
BIN
Lab/Lab3/material/task2/code.EXE
Executable file
134
Lab/Lab3/material/task2/code.LST
Executable file
@@ -0,0 +1,134 @@
|
||||
Turbo Assembler Version 5.3 05-06-23 19:11:34 Page 1
|
||||
code.asm
|
||||
|
||||
|
||||
|
||||
1 0000 DATA SEGMENT
|
||||
2 0000 7F EIGHT DB 7FH
|
||||
3 0001 5B TWO DB 5BH
|
||||
4 0002 6D FIVE DB 6DH
|
||||
5 0003 40 BAR DB 40H
|
||||
6 0004 77 A DB 77H
|
||||
7 0005 00FF T DW 0FFH
|
||||
8 0007 DATA ENDS
|
||||
9
|
||||
10 0000 CODE SEGMENT
|
||||
11 ASSUME CS:CODE, DS:DATA
|
||||
12
|
||||
13 0000 START:
|
||||
14 0000 B8 0000s MOV AX, DATA
|
||||
15 0003 8E D8 MOV DS, AX
|
||||
16
|
||||
17 0005 BA 0283 MOV DX, 283H
|
||||
18 0008 B0 80 MOV AL, 10000000B
|
||||
19 000A EE OUT DX, AL
|
||||
20
|
||||
21
|
||||
22 000B LP:
|
||||
23 000B BA 0280 MOV DX, 280H
|
||||
24 000E B0 80 MOV AL, 10000000B
|
||||
25 0010 EE OUT DX, AL
|
||||
26 0011 BA 0281 MOV DX, 281H
|
||||
27 0014 A0 0000r MOV AL, EIGHT
|
||||
28 0017 EE OUT DX, AL
|
||||
29 0018 E8 0051 CALL DELAY
|
||||
30
|
||||
31 001B BA 0280 MOV DX, 280H
|
||||
32 001E B0 40 MOV AL, 01000000B
|
||||
33 0020 EE OUT DX, AL
|
||||
34 0021 BA 0281 MOV DX, 281H
|
||||
35 0024 A0 0001r MOV AL, TWO
|
||||
36 0027 EE OUT DX, AL
|
||||
37 0028 E8 0041 CALL DELAY
|
||||
38
|
||||
39 002B BA 0280 MOV DX, 280H
|
||||
40 002E B0 20 MOV AL, 00100000B
|
||||
41 0030 EE OUT DX, AL
|
||||
42 0031 BA 0281 MOV DX, 281H
|
||||
43 0034 B0 6D MOV AL, 6DH
|
||||
44 0036 EE OUT DX, AL
|
||||
45 0037 E8 0032 CALL DELAY
|
||||
46
|
||||
47 003A BA 0280 MOV DX, 280H
|
||||
48 003D B0 10 MOV AL, 00010000B
|
||||
49 003F EE OUT DX, AL
|
||||
50 0040 BA 0281 MOV DX, 281H
|
||||
51 0043 A0 0002r MOV AL, FIVE
|
||||
52 0046 EE OUT DX, AL
|
||||
53 0047 E8 0022 CALL DELAY
|
||||
54
|
||||
55 004A BA 0280 MOV DX, 280H
|
||||
56 004D B0 08 MOV AL, 00001000B
|
||||
57 004F EE OUT DX, AL
|
||||
Turbo Assembler Version 5.3 05-06-23 19:11:34 Page 2
|
||||
code.asm
|
||||
|
||||
|
||||
|
||||
58 0050 BA 0281 MOV DX, 281H
|
||||
59 0053 A0 0003r MOV AL, BAR
|
||||
60 0056 EE OUT DX, AL
|
||||
61 0057 E8 0012 CALL DELAY
|
||||
62
|
||||
63 005A BA 0280 MOV DX, 280H
|
||||
64 005D B0 04 MOV AL, 00000100B
|
||||
65 005F EE OUT DX, AL
|
||||
66 0060 BA 0281 MOV DX, 281H
|
||||
67 0063 A0 0004r MOV AL, A
|
||||
68 0066 EE OUT DX, AL
|
||||
69 0067 E8 0002 CALL DELAY
|
||||
70
|
||||
71 006A EB 9F JMP LP
|
||||
72
|
||||
73 006C DELAY PROC
|
||||
74 006C 53 PUSH BX
|
||||
75 006D 8B 1E 0005r MOV BX, T
|
||||
76 0071 DL1:
|
||||
77 0071 4B DEC BX
|
||||
78 0072 75 FD JNZ DL1
|
||||
79 0074 5B POP BX
|
||||
80
|
||||
81 0075 BA 0280 MOV DX, 280H
|
||||
82 0078 B0 00 MOV AL, 00000000B
|
||||
83 007A EE OUT DX, AL
|
||||
84 007B BA 0281 MOV DX, 281H
|
||||
85 007E B0 00 MOV AL, 0
|
||||
86 0080 EE OUT DX, AL
|
||||
87
|
||||
88 0081 C3 RET
|
||||
89 0082 DELAY ENDP
|
||||
90
|
||||
91 0082 CODE ENDS
|
||||
92 END START
|
||||
Turbo Assembler Version 5.3 05-06-23 19:11:34 Page 3
|
||||
Symbol Table
|
||||
|
||||
|
||||
|
||||
|
||||
Symbol Name Type Value
|
||||
|
||||
??DATE Text "05-06-23"
|
||||
??FILENAME Text "code "
|
||||
??TIME Text "19:11:34"
|
||||
??VERSION Number 0503
|
||||
@CPU Text 0101H
|
||||
@CURSEG Text CODE
|
||||
@FILENAME Text CODE
|
||||
@WORDSIZE Text 2
|
||||
A Byte DATA:0004
|
||||
BAR Byte DATA:0003
|
||||
DELAY Near16 CODE:006C
|
||||
DL1 Near16 CODE:0071
|
||||
EIGHT Byte DATA:0000
|
||||
FIVE Byte DATA:0002
|
||||
LP Near16 CODE:000B
|
||||
START Near16 CODE:0000
|
||||
T Word DATA:0005
|
||||
TWO Byte DATA:0001
|
||||
|
||||
Groups & Segments Bit Size Align Combine Class
|
||||
|
||||
CODE 16 0082 Para none
|
||||
DATA 16 0007 Para none
|
||||
|
||||
7
Lab/Lab3/material/task2/code.MAP
Executable file
@@ -0,0 +1,7 @@
|
||||
LINK : warning L4021: no stack segment
|
||||
|
||||
Start Stop Length Name Class
|
||||
00000H 00006H 00007H DATA
|
||||
00010H 00091H 00082H CODE
|
||||
|
||||
Program entry point at 0001:0000
|
||||
BIN
Lab/Lab3/material/task2/code.OBJ
Executable file
92
Lab/Lab3/material/task2/code.asm
Executable file
@@ -0,0 +1,92 @@
|
||||
DATA SEGMENT
|
||||
EIGHT DB 7FH
|
||||
TWO DB 5BH
|
||||
FIVE DB 6DH
|
||||
BAR DB 40H
|
||||
A DB 77H
|
||||
T DW 0FFH
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10000000B ; 1|00(A组0方式)|0(PA输出)|0(PC4-7输出)|0(B组0方式)|0(PB输出)|0(PC0-3输出)
|
||||
OUT DX, AL
|
||||
|
||||
|
||||
LP:
|
||||
MOV DX, 280H ; A口,控制位码
|
||||
MOV AL, 10000000B ; 第1位,PA1置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H ; B口,控制段码
|
||||
MOV AL, EIGHT ; 输出数据段定义的字符“8”
|
||||
OUT DX, AL
|
||||
CALL DELAY ; 延时后清零
|
||||
|
||||
MOV DX, 280H
|
||||
MOV AL, 01000000B ; 第2位,PA2置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, TWO ; 输出数据段定义的字符“2”
|
||||
OUT DX, AL
|
||||
CALL DELAY
|
||||
|
||||
MOV DX, 280H
|
||||
MOV AL, 00100000B ; 第3位,PA3置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, FIVE ; 输出数据段定义的字符“5”
|
||||
OUT DX, AL
|
||||
CALL DELAY
|
||||
|
||||
MOV DX, 280H
|
||||
MOV AL, 00010000B ; 第4位,PA4置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, FIVE ; 输出数据段定义的字符“5”
|
||||
OUT DX, AL
|
||||
CALL DELAY
|
||||
|
||||
MOV DX, 280H
|
||||
MOV AL, 00001000B ; 第5位,PA5置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, BAR ; 输出数据段定义的字符“-”
|
||||
OUT DX, AL
|
||||
CALL DELAY
|
||||
|
||||
MOV DX, 280H
|
||||
MOV AL, 00000100B ; 第6位,PA6置1
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, A ; 输出数据段定义的字符“A”
|
||||
OUT DX, AL
|
||||
CALL DELAY
|
||||
|
||||
JMP LP ; 无限循环
|
||||
|
||||
DELAY PROC
|
||||
PUSH BX
|
||||
MOV BX, T
|
||||
DL1:
|
||||
DEC BX
|
||||
JNZ DL1
|
||||
POP BX
|
||||
; 将位码段码都置0,否则前一位显示的字符会在显示下一位字符显示前在该位上显示
|
||||
MOV DX, 280H
|
||||
MOV AL, 00000000B
|
||||
OUT DX, AL
|
||||
MOV DX, 281H
|
||||
MOV AL, 0
|
||||
OUT DX, AL
|
||||
|
||||
RET
|
||||
DELAY ENDP
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
BIN
Lab/Lab3/material/任务一演示.mp4
Executable file
BIN
Lab/Lab3/实验箱安装.doc
Executable file
BIN
Lab/Lab3/接口技术实验平台补充内容.pptx
Executable file
BIN
Lab/Lab3/接口技术常规实验指导书.doc
Executable file
BIN
Lab/Lab4/21281280_柯劲帆_第4次实验_8254A不同工作方式的实验.zip
Executable file
BIN
Lab/Lab4/21281280_柯劲帆_第4次实验_8254A不同工作方式的实验/21281280_柯劲帆_第4次实验_8254A不同工作方式的实验.pdf
Executable file
BIN
Lab/Lab4/21281280_柯劲帆_第4次实验_8254A不同工作方式的实验/观测方式0演示.mp4
Executable file
BIN
Lab/Lab4/21281280_柯劲帆_第4次实验_8254A不同工作方式的实验/观测方式1演示.mp4
Executable file
BIN
Lab/Lab4/21281280_柯劲帆_第4次实验_8254A不同工作方式的实验/观测方式4演示.mp4
Executable file
BIN
Lab/Lab4/21281280_柯劲帆_第4次实验_8254A不同工作方式的实验/观测方式5演示.mp4
Executable file
BIN
Lab/Lab4/material/1-1.png
Executable file
|
After Width: | Height: | Size: 11 KiB |
BIN
Lab/Lab4/material/1-2.png
Executable file
|
After Width: | Height: | Size: 12 KiB |
437
Lab/Lab4/material/21281280_柯劲帆_第4次实验_8254A实验.md
Executable file
@@ -0,0 +1,437 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h1><center><strong>实验四 8254A不同工作方式的实验</strong></center></h1>
|
||||
|
||||
### 一、实验目的
|
||||
|
||||
更深刻的理解8254A定时/计数器的各种工作方式的特点;通过观察实验波形,可直观地了解这几种工作方式的异同。
|
||||
|
||||
### 二、实验内容
|
||||
|
||||
**任务一:**编写程序分别显示2、3工作方式下的波形。要求2方式的输出频率为1000Hz,3方式的输出频率为2000Hz。本实验使用8253A的定时/计数器0,GATE0通过K1接到+5V或地,CLK0接1MHZ的时钟脉冲,OUT2接示波器观测输出波形(连接线见图1-1示)。
|
||||
|
||||
**任务二:**采用定时器0和定时器1的级联方式,要求定时器0采用2方式,定时器1采用3方式,观测定时器0和定时器1输出波形(时间常数自定,连接线见图1-2示)。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 三、流程图
|
||||
|
||||
**任务一:**
|
||||
|
||||

|
||||
|
||||
**任务二:**
|
||||
|
||||

|
||||
|
||||
### 四、实验过程与分析
|
||||
|
||||
**任务一:**
|
||||
|
||||
8254A芯片的2方式是频率发生器,在每一个计数周期的最后输出长度为一个时钟周期的低脉冲,其余时间维持高脉冲。输出目标频率为1kHz,时钟周期为1MHz,则计数初值为$(1,000,000)_D \div (1,000)_D = (1,000)_D = (0011,1110,1000)_B$。首先在283H口输入方式命令。使用定时器0,计数初值长度为2个字节,使用2方式,使用二进制输入计数初值,所以输入的命令字为$(0011,0100)_B$。随后依次向280H口输入$(0011,1110,1000)_B$的低位字节和高位字节。8254A芯片即可运行。
|
||||
|
||||
示波器显示波形如下:
|
||||
|
||||
<img src="method2.jpg" alt="method2" style="zoom:25%;" />
|
||||
|
||||
8254A芯片的3方式是方波发生器,在每一个计数周期中,前一半周期输出高脉冲,后一半周期输出低脉冲。输出目标频率为2kHz,时钟周期为1MHz,则计数初值为$(1,000,000)_D \div (2,000)_D = (500)_D = (0001,1111,0100)_B$。首先在283H口输入方式命令。使用定时器0,计数初值长度为2个字节,使用2方式,使用二进制输入计数初值,所以输入的命令字为$(0011,0100)_B$。随后依次向280H口输入$(0001,1111,0100)_B$的低位字节和高位字节。8254A芯片即可运行。
|
||||
|
||||
示波器显示波形如下:
|
||||
|
||||
<img src="method3.jpg" alt="method3" style="zoom: 25%;" />
|
||||
|
||||
**任务二:**
|
||||
|
||||
按照任务要求级联定时器0和定时器1。首先将OUT0的输出频率设置为1kHz,CLK0输入为1MHz,则计数初值为$1,000,000 \div 1,000 = (1,000)_D = (0011,1110,1000)_B$。在283H口输入方式命令。使用定时器0,计数初值长度为2个字节,使用2方式,使用二进制输入计数初值,所以输入的命令字为$(0011,0110)_B$。随后依次向280H口输入$(0011,1110,1000)_B$的低位字节和高位字节。
|
||||
|
||||
再将OUT1的计数初值设置为$(10)_D = (0000,1010)_B$,则输出为$(1,000)_D \div (10)_D = (100)_D{\rm Hz}$的方波。在283H口输入方式命令。使用定时器1,计数初值长度为1个字节,使用3方式,使用二进制输入计数初值,所以输入的命令字为$(0101,0110)_B$。随后向280H口输入$(0000,1010)_B$。
|
||||
|
||||
|
||||
|
||||
### 五、实验总结
|
||||
|
||||
通过本实验,我对8254A定时/计数器的各种工作方式的特点的理解更加深刻。我学会了如何在实验箱中使用8254定时器,学会了如何使用示波器。受益匪浅。
|
||||
|
||||
|
||||
|
||||
### 六、思考题
|
||||
|
||||
> 用示波器观测方式0-5,它们所展示的波形如何。
|
||||
|
||||
方式2和方式3已经在任务一中观测。下面介绍观测方式0、方式1、方式4、方式5。
|
||||
|
||||
**观测方式0:**
|
||||
|
||||
使用定时器0,将CLK0连到1MHz时钟源,使用方式3分频,使OUT0的频率为1000Hz;使用定时器1,将CLK1连到频率为1000Hz的OUT0,使用方式3分频,使OUT1的频率为10Hz。级联降频的原因是初值寄存器的大小不足以容纳$\left(100000 \right)_D$的二进制值。降频至10Hz的原因是示波器只能检测5Hz以上的频率。
|
||||
|
||||
使用定时器2,将CLK2连到频率为10Hz的OUT1,使用0方式。初值设置为$\left(40 \right)_D$,因此**OUT2在第二个时钟下降沿之后输出低电平,LED灯灭;4秒后OUT2输出高电平,LED灯亮**。
|
||||
|
||||
使用示波器观察OUT1,将LED7连到OUT2观察定时器2的方式0输出。
|
||||
|
||||
实物连接图如图所示。
|
||||
|
||||
<img src="method0.jpg" alt="method0" style="zoom: 25%;" />
|
||||
|
||||
演示视频见附件。
|
||||
|
||||
代码如下:
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
; 时钟源为1MHz,使用0号计数器3方式降频为1kHz,计数值为1M / 1k = 1000
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 00110110B ; 00(0号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 280H ; 0号计数器
|
||||
MOV AL, 11101000B ; 计数值(1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; 计数值(1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
; 从0号计数器获得1kHz的方波,使用1号计数器3方式降频为10Hz,方便示波器和人眼观察,计数值为1k / 10 = 100
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 01010110B ; 01(1号计数器)|01(读写低字节,高字节置0)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 281H ; 1号计数器
|
||||
MOV AL, 01100100B ; 计数值(100)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
; 从1号计数器获得10Hz的方波,观察2号计数器0工作方式,计数值为4s / 10Hz = 40
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10010000B ; 10(2号计数器)|01(读写低字节,高字节置0)|000(0方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 282H ; 2号计数器
|
||||
MOV AL, 101000B ; 计数值(40)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
```
|
||||
|
||||
**观测方式1:**
|
||||
|
||||
使用计时器0和计时器1级联降频为10Hz,同观测方式0。
|
||||
|
||||
使用定时器2,将CLK2连到频率为10Hz的OUT1,使用1方式。初值设置为$\left(40 \right)_D$。将GATE2连至单次高脉冲发生器。
|
||||
|
||||
**拨动开关K,OUT2立刻输出低电平,LED灯灭;4秒后OUT2输出高电平,LED灯亮**。
|
||||
|
||||
使用示波器观察OUT1,将LED7连到OUT2观察定时器2的方式1输出。
|
||||
|
||||
实物连接图如图所示。
|
||||
|
||||
<img src="method1.jpg" alt="method1" style="zoom: 25%;" />
|
||||
|
||||
演示视频见附件。
|
||||
|
||||
代码如下:
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
; 时钟源为1MHz,使用0号计数器3方式降频为1kHz,计数值为1M / 1k = 1000
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 00110110B ; 00(0号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 280H ; 0号计数器
|
||||
MOV AL, 11101000B ; 计数值(1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; 计数值(1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
; 从0号计数器获得1kHz的方波,使用1号计数器3方式降频为10Hz,方便示波器和人眼观察,计数值为1k / 10 = 100
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 01010110B ; 01(1号计数器)|01(读写低字节,高字节置0)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 281H ; 1号计数器
|
||||
MOV AL, 01100100B ; 计数值(100)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
; 从1号计数器获得10Hz的方波,观察2号计数器1工作方式,计数值为4s / 10Hz = 40
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10010010B ; 10(2号计数器)|01(读写低字节,高字节置0)|001(1方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 282H ; 2号计数器
|
||||
MOV AL, 101000B ; 计数值(40)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
```
|
||||
|
||||
**观测方式4:**
|
||||
|
||||
使用计时器0和计时器1级联降频为1Hz,同观测方式0。选择频率为1Hz的原因是方式4输出的负脉冲的持续时间为1个时钟周期,如果频率太高不易观察。
|
||||
|
||||
使用定时器2,将CLK2连到频率为1Hz的OUT1,使用4方式。初值设置为$\left(4 \right)_D$。
|
||||
|
||||
**启动程序,4秒后OUT2输出持续1s的低电平,LED灯灭,1s后LED重新亮**。
|
||||
|
||||
将GATE2连到单次低脉冲发生器,**在启动程序后的4秒内如果输入一个低脉冲,倒计时会重新计时**。
|
||||
|
||||
使用示波器观察OUT0,将LED7连到OUT2观察定时器2的方式4输出。
|
||||
|
||||
实物连接图如图所示。
|
||||
|
||||
<img src="method4.jpg" alt="method1" style="zoom: 25%;" />
|
||||
|
||||
演示视频见附件。
|
||||
|
||||
代码如下:
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
; 时钟源为1MHz,使用0号计数器3方式降频为1kHz,计数值为1M / 1k = 1000
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 00110110B ; 00(0号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 280H ; 0号计数器
|
||||
MOV AL, 11101000B ; 计数值(1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; 计数值(1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
; 从0号计数器获得1kHz的方波,使用1号计数器3方式降频为1Hz,方便人眼观察,计数值为1k / 1 = 1000
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 01110110B ; 01(1号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 281H ; 1号计数器
|
||||
MOV AL, 11101000B ; 计数值(1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; 计数值(1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
; 从1号计数器获得1Hz的方波,观察2号计数器4工作方式,计数值为4s / 1Hz = 4
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10011000B ; 10(2号计数器)|01(读写低字节,高字节置0)|100(4方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 282H ; 2号计数器
|
||||
MOV AL, 100B ; 计数值(4)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
```
|
||||
|
||||
**观测方式5:**
|
||||
|
||||
使用计时器0和计时器1级联降频为1Hz,同观测方式4。
|
||||
|
||||
使用定时器2,将CLK2连到频率为1Hz的OUT1,使用5方式。初值设置为$\left(4 \right)_D$。将GATE2连至单次高脉冲发生器。
|
||||
|
||||
**拨动开关K,4秒后OUT2输出持续1s的低电平,LED灯灭,1s后LED重新亮**。
|
||||
|
||||
使用示波器观察OUT0,将LED7连到OUT2观察定时器2的方式5输出。
|
||||
|
||||
实物连接图如图所示。
|
||||
|
||||
<img src="method5.jpg" alt="method1" style="zoom: 25%;" />
|
||||
|
||||
演示视频见附件。
|
||||
|
||||
代码如下:
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
; 时钟源为1MHz,使用0号计数器3方式降频为1kHz,计数值为1M / 1k = 1000
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 00110110B ; 00(0号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 280H ; 0号计数器
|
||||
MOV AL, 11101000B ; 计数值(1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; 计数值(1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
; 从0号计数器获得1kHz的方波,使用1号计数器3方式降频为1Hz,方便人眼观察,计数值为1k / 1 = 1000
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 01110110B ; 01(1号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 281H ; 1号计数器
|
||||
MOV AL, 11101000B ; 计数值(1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; 计数值(1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
; 从1号计数器获得1Hz的方波,观察2号计数器5工作方式,计数值为4s / 1Hz = 4
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10011010B ; 10(2号计数器)|01(读写低字节,高字节置0)|101(5方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 282H ; 2号计数器
|
||||
MOV AL, 100B ; 计数值(4)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 源代码附录
|
||||
|
||||
**任务一:**
|
||||
|
||||
方式2:
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 00110100B ; 00(0号计数器)|11(读写2字节)|010(2方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
MOV DX, 280H ; 0号计数器
|
||||
MOV AL, 11101000B ; (1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; (1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
```
|
||||
|
||||
方式3:
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 00110110B ; 00(0号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
MOV DX, 280H ; 0号计数器
|
||||
MOV AL, 11110100B ; (500)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000001B ; (500)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
```
|
||||
|
||||
**任务二:**
|
||||
|
||||
```assembly
|
||||
DATA SEGMENT
|
||||
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 00110100B ; 00(0号计数器)|11(读写2字节)|010(2方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
MOV DX, 280H ; 0号计数器
|
||||
MOV AL, 11101000B ; (1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; (1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 01010110B ; 01(1号计数器)|01(读写低字节,高字节为0)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
MOV DX, 281H ; 1号计数器
|
||||
MOV AL, 00001010B ; (10)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
```
|
||||
BIN
Lab/Lab4/material/21281280_柯劲帆_第4次实验_8254A实验.pdf
Executable file
BIN
Lab/Lab4/material/cover.png
Executable file
|
After Width: | Height: | Size: 60 KiB |
BIN
Lab/Lab4/material/method0.jpg
Executable file
|
After Width: | Height: | Size: 3.5 MiB |
BIN
Lab/Lab4/material/method0test/code.EXE
Executable file
71
Lab/Lab4/material/method0test/code.LST
Executable file
@@ -0,0 +1,71 @@
|
||||
Turbo Assembler Version 5.3 05-06-23 20:42:50 Page 1
|
||||
code.asm
|
||||
|
||||
|
||||
|
||||
1 0000 DATA SEGMENT
|
||||
2
|
||||
3 0000 DATA ENDS
|
||||
4
|
||||
5 0000 CODE SEGMENT
|
||||
6 ASSUME CS:CODE, DS:DATA
|
||||
7
|
||||
8 0000 START:
|
||||
9 0000 B8 0000s MOV AX, DATA
|
||||
10 0003 8E D8 MOV DS, AX
|
||||
11
|
||||
12
|
||||
13 0005 BA 0283 MOV DX, 283H
|
||||
14 0008 B0 36 MOV AL, 00110110B
|
||||
15 000A EE OUT DX, AL
|
||||
16
|
||||
17 000B BA 0280 MOV DX, 280H
|
||||
18 000E B0 E8 MOV AL, 11101000B
|
||||
19 0010 EE OUT DX, AL
|
||||
20 0011 B0 03 MOV AL, 00000011B
|
||||
21 0013 EE OUT DX, AL
|
||||
22
|
||||
23
|
||||
24 0014 BA 0283 MOV DX, 283H
|
||||
25 0017 B0 56 MOV AL, 01010110B
|
||||
26 0019 EE OUT DX, AL
|
||||
27
|
||||
28 001A BA 0281 MOV DX, 281H
|
||||
29 001D B0 64 MOV AL, 01100100B
|
||||
30 001F EE OUT DX, AL
|
||||
31
|
||||
32
|
||||
33 0020 BA 0283 MOV DX, 283H
|
||||
34 0023 B0 90 MOV AL, 10010000B
|
||||
35 0025 EE OUT DX, AL
|
||||
36
|
||||
37 0026 BA 0282 MOV DX, 282H
|
||||
38 0029 B0 28 MOV AL, 101000B
|
||||
39 002B EE OUT DX, AL
|
||||
40
|
||||
41
|
||||
42 002C CODE ENDS
|
||||
43 END START
|
||||
Turbo Assembler Version 5.3 05-06-23 20:42:50 Page 2
|
||||
Symbol Table
|
||||
|
||||
|
||||
|
||||
|
||||
Symbol Name Type Value
|
||||
|
||||
??DATE Text "05-06-23"
|
||||
??FILENAME Text "code "
|
||||
??TIME Text "20:42:50"
|
||||
??VERSION Number 0503
|
||||
@CPU Text 0101H
|
||||
@CURSEG Text CODE
|
||||
@FILENAME Text CODE
|
||||
@WORDSIZE Text 2
|
||||
START Near16 CODE:0000
|
||||
|
||||
Groups & Segments Bit Size Align Combine Class
|
||||
|
||||
CODE 16 002C Para none
|
||||
DATA 16 0000 Para none
|
||||
|
||||
7
Lab/Lab4/material/method0test/code.MAP
Executable file
@@ -0,0 +1,7 @@
|
||||
LINK : warning L4021: no stack segment
|
||||
|
||||
Start Stop Length Name Class
|
||||
00000H 00000H 00000H DATA
|
||||
00000H 0002BH 0002CH CODE
|
||||
|
||||
Program entry point at 0000:0000
|
||||
BIN
Lab/Lab4/material/method0test/code.OBJ
Executable file
42
Lab/Lab4/material/method0test/code.asm
Executable file
@@ -0,0 +1,42 @@
|
||||
DATA SEGMENT
|
||||
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
; 时钟源为1MHz,使用0号计数器3方式降频为1kHz,计数值为1M / 1k = 1000
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 00110110B ; 00(0号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 280H ; 0号计数器
|
||||
MOV AL, 11101000B ; 计数值(1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; 计数值(1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
; 从0号计数器获得1kHz的方波,使用1号计数器3方式降频为10Hz,方便示波器和人眼观察,计数值为1k / 10 = 100
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 01010110B ; 01(1号计数器)|01(读写低字节,高字节置0)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 281H ; 1号计数器
|
||||
MOV AL, 01100100B ; 计数值(100)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
; 从1号计数器获得10Hz的方波,观察2号计数器0工作方式,计数值为4s / 10Hz = 40
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10010000B ; 10(2号计数器)|01(读写低字节,高字节置0)|000(0方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 282H ; 2号计数器
|
||||
MOV AL, 101000B ; 计数值(40)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
BIN
Lab/Lab4/material/method1.jpg
Executable file
|
After Width: | Height: | Size: 4.8 MiB |
BIN
Lab/Lab4/material/method1test/code.EXE
Executable file
71
Lab/Lab4/material/method1test/code.LST
Executable file
@@ -0,0 +1,71 @@
|
||||
Turbo Assembler Version 5.3 05-06-23 20:50:25 Page 1
|
||||
code.asm
|
||||
|
||||
|
||||
|
||||
1 0000 DATA SEGMENT
|
||||
2
|
||||
3 0000 DATA ENDS
|
||||
4
|
||||
5 0000 CODE SEGMENT
|
||||
6 ASSUME CS:CODE, DS:DATA
|
||||
7
|
||||
8 0000 START:
|
||||
9 0000 B8 0000s MOV AX, DATA
|
||||
10 0003 8E D8 MOV DS, AX
|
||||
11
|
||||
12
|
||||
13 0005 BA 0283 MOV DX, 283H
|
||||
14 0008 B0 36 MOV AL, 00110110B
|
||||
15 000A EE OUT DX, AL
|
||||
16
|
||||
17 000B BA 0280 MOV DX, 280H
|
||||
18 000E B0 E8 MOV AL, 11101000B
|
||||
19 0010 EE OUT DX, AL
|
||||
20 0011 B0 03 MOV AL, 00000011B
|
||||
21 0013 EE OUT DX, AL
|
||||
22
|
||||
23
|
||||
24 0014 BA 0283 MOV DX, 283H
|
||||
25 0017 B0 56 MOV AL, 01010110B
|
||||
26 0019 EE OUT DX, AL
|
||||
27
|
||||
28 001A BA 0281 MOV DX, 281H
|
||||
29 001D B0 64 MOV AL, 01100100B
|
||||
30 001F EE OUT DX, AL
|
||||
31
|
||||
32
|
||||
33 0020 BA 0283 MOV DX, 283H
|
||||
34 0023 B0 92 MOV AL, 10010010B
|
||||
35 0025 EE OUT DX, AL
|
||||
36
|
||||
37 0026 BA 0282 MOV DX, 282H
|
||||
38 0029 B0 28 MOV AL, 101000B
|
||||
39 002B EE OUT DX, AL
|
||||
40
|
||||
41
|
||||
42 002C CODE ENDS
|
||||
43 END START
|
||||
Turbo Assembler Version 5.3 05-06-23 20:50:25 Page 2
|
||||
Symbol Table
|
||||
|
||||
|
||||
|
||||
|
||||
Symbol Name Type Value
|
||||
|
||||
??DATE Text "05-06-23"
|
||||
??FILENAME Text "code "
|
||||
??TIME Text "20:50:25"
|
||||
??VERSION Number 0503
|
||||
@CPU Text 0101H
|
||||
@CURSEG Text CODE
|
||||
@FILENAME Text CODE
|
||||
@WORDSIZE Text 2
|
||||
START Near16 CODE:0000
|
||||
|
||||
Groups & Segments Bit Size Align Combine Class
|
||||
|
||||
CODE 16 002C Para none
|
||||
DATA 16 0000 Para none
|
||||
|
||||
7
Lab/Lab4/material/method1test/code.MAP
Executable file
@@ -0,0 +1,7 @@
|
||||
LINK : warning L4021: no stack segment
|
||||
|
||||
Start Stop Length Name Class
|
||||
00000H 00000H 00000H DATA
|
||||
00000H 0002BH 0002CH CODE
|
||||
|
||||
Program entry point at 0000:0000
|
||||
BIN
Lab/Lab4/material/method1test/code.OBJ
Executable file
42
Lab/Lab4/material/method1test/code.asm
Executable file
@@ -0,0 +1,42 @@
|
||||
DATA SEGMENT
|
||||
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
; 时钟源为1MHz,使用0号计数器3方式降频为1kHz,计数值为1M / 1k = 1000
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 00110110B ; 00(0号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 280H ; 0号计数器
|
||||
MOV AL, 11101000B ; 计数值(1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; 计数值(1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
; 从0号计数器获得1kHz的方波,使用1号计数器3方式降频为10Hz,方便示波器和人眼观察,计数值为1k / 10 = 100
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 01010110B ; 01(1号计数器)|01(读写低字节,高字节置0)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 281H ; 1号计数器
|
||||
MOV AL, 01100100B ; 计数值(100)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
; 从1号计数器获得10Hz的方波,观察2号计数器1工作方式,计数值为4s / 10Hz = 40
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10010010B ; 10(2号计数器)|01(读写低字节,高字节置0)|001(1方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 282H ; 2号计数器
|
||||
MOV AL, 101000B ; 计数值(40)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||
BIN
Lab/Lab4/material/method2.jpg
Executable file
|
After Width: | Height: | Size: 3.3 MiB |
BIN
Lab/Lab4/material/method3.jpg
Executable file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
Lab/Lab4/material/method4.jpg
Executable file
|
After Width: | Height: | Size: 4.9 MiB |
BIN
Lab/Lab4/material/method4test/code.EXE
Executable file
73
Lab/Lab4/material/method4test/code.LST
Executable file
@@ -0,0 +1,73 @@
|
||||
Turbo Assembler Version 5.3 05-06-23 21:40:00 Page 1
|
||||
code.asm
|
||||
|
||||
|
||||
|
||||
1 0000 DATA SEGMENT
|
||||
2
|
||||
3 0000 DATA ENDS
|
||||
4
|
||||
5 0000 CODE SEGMENT
|
||||
6 ASSUME CS:CODE, DS:DATA
|
||||
7
|
||||
8 0000 START:
|
||||
9 0000 B8 0000s MOV AX, DATA
|
||||
10 0003 8E D8 MOV DS, AX
|
||||
11
|
||||
12
|
||||
13 0005 BA 0283 MOV DX, 283H
|
||||
14 0008 B0 36 MOV AL, 00110110B
|
||||
15 000A EE OUT DX, AL
|
||||
16
|
||||
17 000B BA 0280 MOV DX, 280H
|
||||
18 000E B0 E8 MOV AL, 11101000B
|
||||
19 0010 EE OUT DX, AL
|
||||
20 0011 B0 03 MOV AL, 00000011B
|
||||
21 0013 EE OUT DX, AL
|
||||
22
|
||||
23
|
||||
24 0014 BA 0283 MOV DX, 283H
|
||||
25 0017 B0 76 MOV AL, 01110110B
|
||||
26 0019 EE OUT DX, AL
|
||||
27
|
||||
28 001A BA 0281 MOV DX, 281H
|
||||
29 001D B0 E8 MOV AL, 11101000B
|
||||
30 001F EE OUT DX, AL
|
||||
31 0020 B0 03 MOV AL, 00000011B
|
||||
32 0022 EE OUT DX, AL
|
||||
33
|
||||
34
|
||||
35 0023 BA 0283 MOV DX, 283H
|
||||
36 0026 B0 98 MOV AL, 10011000B
|
||||
37 0028 EE OUT DX, AL
|
||||
38
|
||||
39 0029 BA 0282 MOV DX, 282H
|
||||
40 002C B0 04 MOV AL, 100B
|
||||
41 002E EE OUT DX, AL
|
||||
42
|
||||
43
|
||||
44 002F CODE ENDS
|
||||
45 END START
|
||||
Turbo Assembler Version 5.3 05-06-23 21:40:00 Page 2
|
||||
Symbol Table
|
||||
|
||||
|
||||
|
||||
|
||||
Symbol Name Type Value
|
||||
|
||||
??DATE Text "05-06-23"
|
||||
??FILENAME Text "code "
|
||||
??TIME Text "21:40:00"
|
||||
??VERSION Number 0503
|
||||
@CPU Text 0101H
|
||||
@CURSEG Text CODE
|
||||
@FILENAME Text CODE
|
||||
@WORDSIZE Text 2
|
||||
START Near16 CODE:0000
|
||||
|
||||
Groups & Segments Bit Size Align Combine Class
|
||||
|
||||
CODE 16 002F Para none
|
||||
DATA 16 0000 Para none
|
||||
|
||||
7
Lab/Lab4/material/method4test/code.MAP
Executable file
@@ -0,0 +1,7 @@
|
||||
LINK : warning L4021: no stack segment
|
||||
|
||||
Start Stop Length Name Class
|
||||
00000H 00000H 00000H DATA
|
||||
00000H 0002EH 0002FH CODE
|
||||
|
||||
Program entry point at 0000:0000
|
||||
BIN
Lab/Lab4/material/method4test/code.OBJ
Executable file
44
Lab/Lab4/material/method4test/code.asm
Executable file
@@ -0,0 +1,44 @@
|
||||
DATA SEGMENT
|
||||
|
||||
DATA ENDS
|
||||
|
||||
CODE SEGMENT
|
||||
ASSUME CS:CODE, DS:DATA
|
||||
|
||||
START:
|
||||
MOV AX, DATA
|
||||
MOV DS, AX
|
||||
|
||||
; 时钟源为1MHz,使用0号计数器3方式降频为1kHz,计数值为1M / 1k = 1000
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 00110110B ; 00(0号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 280H ; 0号计数器
|
||||
MOV AL, 11101000B ; 计数值(1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; 计数值(1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
; 从0号计数器获得1kHz的方波,使用1号计数器3方式降频为1Hz,方便人眼观察,计数值为1k / 1 = 1000
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 01110110B ; 01(1号计数器)|11(读写2字节)|011(3方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 281H ; 1号计数器
|
||||
MOV AL, 11101000B ; 计数值(1000)_D的2进制的低8位
|
||||
OUT DX, AL
|
||||
MOV AL, 00000011B ; 计数值(1000)_D的2进制的高8位
|
||||
OUT DX, AL
|
||||
|
||||
; 从1号计数器获得1Hz的方波,观察2号计数器4工作方式,计数值为4s / 1Hz = 4
|
||||
MOV DX, 283H ; 命令口
|
||||
MOV AL, 10011000B ; 10(2号计数器)|01(读写低字节,高字节置0)|100(4方式工作)|0(计数值为2进制)
|
||||
OUT DX, AL
|
||||
|
||||
MOV DX, 282H ; 2号计数器
|
||||
MOV AL, 100B ; 计数值(4)_D的2进制
|
||||
OUT DX, AL
|
||||
|
||||
CODE ENDS
|
||||
END START
|
||||