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/Lab1/material/1-1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
Lab/Lab1/material/1-3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

BIN
Lab/Lab1/material/1-4.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

23
Lab/Lab1/material/1.asm Executable file
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
Lab/Lab1/material/2-2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
Lab/Lab1/material/2-3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

37
Lab/Lab1/material/2.asm Executable file
View 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

View File

@@ -0,0 +1,178 @@
![cover](cover.png)
# 一、实验目的
1. 进一步学习汇编语言基本指令使用方法;
2. 学习DEBUG调试工具的基本使用方法掌握debug调试命令a、u、r、d、t、g等
3. 逐条观察程序指令的执行过程,理解指令的功能,理解程序自动、顺序地执行的概念,实践其过程(重点)。
# 二、实验内容
1. 编写、输入一个32位二进制数相加程序逐条执行指令观察指令执行情况。
1. 使用已经过汇编和连接的小程序(t3-2.exe)将其装入内存逐条执行指令观察执行过程和结果。在实验过程中使用E命令修改XXX和YYY单元中的数据再重新计算其结果。
# 三、流程图
第一题:
![graph1.drawio](graph1.drawio.svg)
# 四、实验过程与分析
第一题:
进入调试, -U
![1-1](1-1.png)
-T
![1-2](1-2.png)
载入数据段后:
![1-3](1-3.png)
程序执行完毕后:
![1-4](1-4.png)
第二题:
<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
```

Binary file not shown.

BIN
Lab/Lab1/material/cover.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

43
Lab/Lab1/material/graph1.drawio Executable file
View 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>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.8 KiB