first commit

This commit is contained in:
2025-05-27 16:03:52 +08:00
commit 2d22d07f60
223 changed files with 5842 additions and 0 deletions

BIN
Lab/Lab4/material/1-1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
Lab/Lab4/material/1-2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,437 @@
![cover](cover.png)
<h1><center><strong>实验四 8254A不同工作方式的实验</strong></center></h1>
### 一、实验目的
更深刻的理解8254A定时/计数器的各种工作方式的特点;通过观察实验波形,可直观地了解这几种工作方式的异同。
### 二、实验内容
**任务一:**编写程序分别显示2、3工作方式下的波形。要求2方式的输出频率为1000Hz3方式的输出频率为2000Hz。本实验使用8253A的定时/计数器0GATE0通过K1接到+5V或地CLK0接1MHZ的时钟脉冲OUT2接示波器观测输出波形连接线见图1-1示
**任务二:**采用定时器0和定时器1的级联方式要求定时器0采用2方式定时器1采用3方式观测定时器0和定时器1输出波形时间常数自定连接线见图1-2示
![1-1](1-1.png)
![1-2](1-2.png)
### 三、流程图
**任务一:**
![task1.drawio](task1.drawio.svg)
**任务二:**
![task3.drawio](task3.drawio.svg)
### 四、实验过程与分析
**任务一:**
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的输出频率设置为1kHzCLK0输入为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连至单次高脉冲发生器。
**拨动开关KOUT2立刻输出低电平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连至单次高脉冲发生器。
**拨动开关K4秒后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/cover.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
Lab/Lab4/material/method0.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

View 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

View 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

Binary file not shown.

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

View 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

View 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

Binary file not shown.

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

BIN
Lab/Lab4/material/method3.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

BIN
Lab/Lab4/material/method4.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 MiB

Binary file not shown.

View 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

View 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

Binary file not shown.

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

View 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

View 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

Binary file not shown.

View 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
View 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>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

BIN
Lab/Lab4/material/task1/code.EXE Executable file

Binary file not shown.

View 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

View 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

Binary file not shown.

View 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

Binary file not shown.

View 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

View 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

Binary file not shown.

View 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
View 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>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

BIN
Lab/Lab4/material/task3/code.EXE Executable file

Binary file not shown.

View 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

View 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

Binary file not shown.

View 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