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

Binary file not shown.

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

View 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

Binary file not shown.

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

Binary file not shown.

Binary file not shown.