first commit
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
|
||||
BIN
Lab/Lab4/material/method5.jpg
Executable file
|
After Width: | Height: | Size: 4.6 MiB |
BIN
Lab/Lab4/material/method5test/code.EXE
Executable file
72
Lab/Lab4/material/method5test/code.LST
Executable file
@@ -0,0 +1,72 @@
|
||||
Turbo Assembler Version 5.3 05-06-23 21:46:11 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 0023 BA 0283 MOV DX, 283H
|
||||
35 0026 B0 9A MOV AL, 10011010B
|
||||
36 0028 EE OUT DX, AL
|
||||
37
|
||||
38 0029 BA 0282 MOV DX, 282H
|
||||
39 002C B0 04 MOV AL, 100B
|
||||
40 002E EE OUT DX, AL
|
||||
41
|
||||
42
|
||||
43 002F CODE ENDS
|
||||
44 END START
|
||||
Turbo Assembler Version 5.3 05-06-23 21:46:11 Page 2
|
||||
Symbol Table
|
||||
|
||||
|
||||
|
||||
|
||||
Symbol Name Type Value
|
||||
|
||||
??DATE Text "05-06-23"
|
||||
??FILENAME Text "code "
|
||||
??TIME Text "21:46:11"
|
||||
??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/method5test/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/method5test/code.OBJ
Executable file
44
Lab/Lab4/material/method5test/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号计数器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
|
||||
37
Lab/Lab4/material/task1.drawio
Executable file
@@ -0,0 +1,37 @@
|
||||
<mxfile host="Electron" modified="2023-05-12T14:37:30.386Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="3VhGvUtkqV44K9g1AQmU" version="21.2.8" type="device">
|
||||
<diagram name="Page-1" id="ibXy2JDDqVeH8OopQ6hZ">
|
||||
<mxGraphModel dx="940" dy="763" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="9e14IgkX5Qe-eTfN7fZ6-3" 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="9e14IgkX5Qe-eTfN7fZ6-1" target="9e14IgkX5Qe-eTfN7fZ6-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="9e14IgkX5Qe-eTfN7fZ6-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="9e14IgkX5Qe-eTfN7fZ6-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="9e14IgkX5Qe-eTfN7fZ6-2" target="9e14IgkX5Qe-eTfN7fZ6-4">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="9e14IgkX5Qe-eTfN7fZ6-2" value="向283H口输出方式命令字0011,0100B" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="160" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="9e14IgkX5Qe-eTfN7fZ6-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="9e14IgkX5Qe-eTfN7fZ6-4" target="9e14IgkX5Qe-eTfN7fZ6-5">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="9e14IgkX5Qe-eTfN7fZ6-4" value="向280H口输出计数初值低字节1110,1000B" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="240" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="9e14IgkX5Qe-eTfN7fZ6-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="9e14IgkX5Qe-eTfN7fZ6-5" target="9e14IgkX5Qe-eTfN7fZ6-8">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="9e14IgkX5Qe-eTfN7fZ6-5" value="向280H口输出计数初值高字节0000,0011B" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="320" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="9e14IgkX5Qe-eTfN7fZ6-8" value="程序结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="400" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
4
Lab/Lab4/material/task1.drawio.svg
Executable file
|
After Width: | Height: | Size: 16 KiB |
BIN
Lab/Lab4/material/task1/code.EXE
Executable file
50
Lab/Lab4/material/task1/code.LST
Executable file
@@ -0,0 +1,50 @@
|
||||
Turbo Assembler Version 5.3 05-06-23 19:47:15 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 0005 BA 0283 MOV DX, 283H
|
||||
13 0008 B0 34 MOV AL, 00110100B
|
||||
14 000A EE OUT DX, AL
|
||||
15 000B BA 0280 MOV DX, 280H
|
||||
16 000E B0 E8 MOV AL, 11101000B
|
||||
17 0010 EE OUT DX, AL
|
||||
18 0011 B0 03 MOV AL, 00000011B
|
||||
19 0013 EE OUT DX, AL
|
||||
20
|
||||
21 0014 CODE ENDS
|
||||
22 END START
|
||||
Turbo Assembler Version 5.3 05-06-23 19:47:15 Page 2
|
||||
Symbol Table
|
||||
|
||||
|
||||
|
||||
|
||||
Symbol Name Type Value
|
||||
|
||||
??DATE Text "05-06-23"
|
||||
??FILENAME Text "code "
|
||||
??TIME Text "19:47:15"
|
||||
??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 0014 Para none
|
||||
DATA 16 0000 Para none
|
||||
|
||||
7
Lab/Lab4/material/task1/code.MAP
Executable file
@@ -0,0 +1,7 @@
|
||||
LINK : warning L4021: no stack segment
|
||||
|
||||
Start Stop Length Name Class
|
||||
00000H 00000H 00000H DATA
|
||||
00000H 00013H 00014H CODE
|
||||
|
||||
Program entry point at 0000:0000
|
||||
BIN
Lab/Lab4/material/task1/code.OBJ
Executable file
22
Lab/Lab4/material/task1/code.asm
Executable file
@@ -0,0 +1,22 @@
|
||||
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
|
||||
BIN
Lab/Lab4/material/task2/code.EXE
Executable file
50
Lab/Lab4/material/task2/code.LST
Executable file
@@ -0,0 +1,50 @@
|
||||
Turbo Assembler Version 5.3 05-09-23 17:33:28 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 0005 BA 0283 MOV DX, 283H
|
||||
13 0008 B0 36 MOV AL, 00110110B
|
||||
14 000A EE OUT DX, AL
|
||||
15 000B BA 0280 MOV DX, 280H
|
||||
16 000E B0 F4 MOV AL, 11110100B
|
||||
17 0010 EE OUT DX, AL
|
||||
18 0011 B0 01 MOV AL, 00000001B
|
||||
19 0013 EE OUT DX, AL
|
||||
20
|
||||
21 0014 CODE ENDS
|
||||
22 END START
|
||||
Turbo Assembler Version 5.3 05-09-23 17:33:28 Page 2
|
||||
Symbol Table
|
||||
|
||||
|
||||
|
||||
|
||||
Symbol Name Type Value
|
||||
|
||||
??DATE Text "05-09-23"
|
||||
??FILENAME Text "code "
|
||||
??TIME Text "17:33:28"
|
||||
??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 0014 Para none
|
||||
DATA 16 0000 Para none
|
||||
|
||||
7
Lab/Lab4/material/task2/code.MAP
Executable file
@@ -0,0 +1,7 @@
|
||||
LINK : warning L4021: no stack segment
|
||||
|
||||
Start Stop Length Name Class
|
||||
00000H 00000H 00000H DATA
|
||||
00000H 00013H 00014H CODE
|
||||
|
||||
Program entry point at 0000:0000
|
||||
BIN
Lab/Lab4/material/task2/code.OBJ
Executable file
22
Lab/Lab4/material/task2/code.asm
Executable file
@@ -0,0 +1,22 @@
|
||||
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
|
||||
49
Lab/Lab4/material/task3.drawio
Executable file
@@ -0,0 +1,49 @@
|
||||
<mxfile host="Electron" modified="2023-05-12T15:41:01.066Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="jo1qjpEMdA_TNUZpBVbh" version="21.2.8" type="device">
|
||||
<diagram name="Page-1" id="QGOu-iY1Dl2_XG32huEA">
|
||||
<mxGraphModel dx="1368" dy="843" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-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="oPQ6jujWiKKXOlx0xOFn-1" target="oPQ6jujWiKKXOlx0xOFn-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-1" value="程序开始" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="240" y="80" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-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="oPQ6jujWiKKXOlx0xOFn-2" target="oPQ6jujWiKKXOlx0xOFn-3">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-2" value="向283H口输出方式命令字0011,0100B" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="240" y="160" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-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="oPQ6jujWiKKXOlx0xOFn-3" target="oPQ6jujWiKKXOlx0xOFn-4">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-3" value="向280H口输出计数初值低字节1110,1000B" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="240" y="240" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-12" 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="oPQ6jujWiKKXOlx0xOFn-4" target="oPQ6jujWiKKXOlx0xOFn-5">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-4" value="向280H口输出计数初值高字节0000,0011B" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="240" y="320" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="oPQ6jujWiKKXOlx0xOFn-5" target="oPQ6jujWiKKXOlx0xOFn-6">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-5" value="向283H口输出方式命令字0101,0110B" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="160" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-14" 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="oPQ6jujWiKKXOlx0xOFn-6" target="oPQ6jujWiKKXOlx0xOFn-7">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-6" value="向280H口输出计数初值0000,1010B" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="240" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="oPQ6jujWiKKXOlx0xOFn-7" value="程序结束" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="360" width="120" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
4
Lab/Lab4/material/task3.drawio.svg
Executable file
|
After Width: | Height: | Size: 11 KiB |
BIN
Lab/Lab4/material/task3/code.EXE
Executable file
57
Lab/Lab4/material/task3/code.LST
Executable file
@@ -0,0 +1,57 @@
|
||||
Turbo Assembler Version 5.3 05-06-23 20:03:59 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 0005 BA 0283 MOV DX, 283H
|
||||
13 0008 B0 34 MOV AL, 00110100B
|
||||
14 000A EE OUT DX, AL
|
||||
15 000B BA 0280 MOV DX, 280H
|
||||
16 000E B0 E8 MOV AL, 11101000B
|
||||
17 0010 EE OUT DX, AL
|
||||
18 0011 B0 03 MOV AL, 00000011B
|
||||
19 0013 EE OUT DX, AL
|
||||
20
|
||||
21 0014 BA 0283 MOV DX, 283H
|
||||
22 0017 B0 56 MOV AL, 01010110B
|
||||
23 0019 EE OUT DX, AL
|
||||
24 001A BA 0281 MOV DX, 281H
|
||||
25 001D B0 0A MOV AL, 00001010B
|
||||
26 001F EE OUT DX, AL
|
||||
27
|
||||
28 0020 CODE ENDS
|
||||
29 END START
|
||||
Turbo Assembler Version 5.3 05-06-23 20:03:59 Page 2
|
||||
Symbol Table
|
||||
|
||||
|
||||
|
||||
|
||||
Symbol Name Type Value
|
||||
|
||||
??DATE Text "05-06-23"
|
||||
??FILENAME Text "code "
|
||||
??TIME Text "20:03:59"
|
||||
??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 0020 Para none
|
||||
DATA 16 0000 Para none
|
||||
|
||||
7
Lab/Lab4/material/task3/code.MAP
Executable file
@@ -0,0 +1,7 @@
|
||||
LINK : warning L4021: no stack segment
|
||||
|
||||
Start Stop Length Name Class
|
||||
00000H 00000H 00000H DATA
|
||||
00000H 0001FH 00020H CODE
|
||||
|
||||
Program entry point at 0000:0000
|
||||
BIN
Lab/Lab4/material/task3/code.OBJ
Executable file
29
Lab/Lab4/material/task3/code.asm
Executable file
@@ -0,0 +1,29 @@
|
||||
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
|
||||