- 熟悉 DEBUG 的功能,运行并掌握其常用命令.
- 掌握用 DEBUG 调试程序的方法.
DEBUG 的加载及其常用命令 (D E F R G A T U N L W Q) 的使用情况.
- 硬件环境: AMD Ryzen 9.
- 软件环境: Windows XP Pro SP3 (in VMware Workstation 16 Pro).
- 调试程序:
DEBUG.EXE.
在 VMware Workstation 16 Pro 中使用 Windows XP Pro SP3 镜像(SHA256 39430C2B8DD5C21BBD5AF9116573F8C574AE896CE31D47280914EF268F01E33F)安装虚拟机.
复制相关文件到虚拟机, DEBUG.EXE 可直接双击打开.
也可使用 Dosbox ,相关配置如下.
[sdl]
fullscreen=false
fulldouble=false
fullresolution=3840x1920
windowresolution=1920x1080
output=overlay
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper-0.74.map
usescancodes=true输入程序命令:
-a
mov ax,1234
mov bx,1111
add ax,bx-t
-t
-t
-t=100
-t=100,3-g=100,108-n qwq
-r bx
:0000
-r cx
:ffff
-wdir-n qwq
-l-u-d 100 140-e ds:110
00 01 10 11 32 33 ff ff
-f 0adc:0120 L f 'Qw'
-d 100 13f
-wT=100 满足 T[=address] 格式,将会从 address (即 CS:0100 )单元中的指令开始单步执行; address 缺省值为 CS:IP ,即单独使用 T 将会从 CS:IP 单元中的指令开始单步执行.
100 是指令指针位置.
T=100,3 指令中的 3 表示执行三步.
在 CS:0108 处设置断点并从 CS:0100 开始执行程序.
T 为单步执行, G 为连续执行.
D 直接以十六进制显示文件内容, U 显示反汇编所得指令.
- 利用 DEBUG 掌握有关的命令.
- 利用 DEBUG 运行简单的程序段.
用命令 A 汇编下列程序段,并将程序写到硬盘上,然后调试程序段,观察程序段能否完成指定功能.若不能,说明原因,并修改程序.
MOV AX,1000
MOV [1200],AX
MOV BX,1202
MOV BYTE PTR[BX],20
MOV DL,39
INC BX
MOV [BX],DL
DEC DL
MOV SI,3
MOV [BX+SI],DL
MOV [BX+SI+1],DL
MOV WORD PTR[BX+SI+2],1234 MOV DI,1234
MOV CX,8
MOV SI,2234
CLC
Again: MOV AL,[SI]
ADC [DI],AL
INC SI
INC DI
LOOP AgainMOV AL,06
SHL AL,1
MOV BL,AL
MOV CL,2
SHL AL,CL
ADD AL,BL用 A 命令 DB 伪指令在 1000H 键入下列字符串: This's a string..
用 A 命令键入下列程序:
MOV SI,1000
MOV DI,2000
MOV CX,0FH
LOP:MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
LOOP LOP
INT 20- 硬件环境: AMD Ryzen 9.
- 软件环境: Windows XP Pro SP3 (in VMware Workstation 16 Pro).
- 编辑程序: Visual Studio Code 1.62.3.
- 调试程序:
DEBUG.EXE.
原程序需要将中文标点修改为英文标点. 运行和查看结果:
-a
# 程序段
-g 120
-d 1200 120f立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、寄
存器相对寻址等寻址方式的样例.

修改后程序:
MOV DI,1234
MOV CX,8
MOV SI,2234
CLC
MOV AL,[SI]
ADC [DI],AL
INC SI
INC DI
LOOP 010A运行和查看结果:
-a
# 程序段
-d 1230 123f
-d 2230 223f
-g 112
-d 1230 123f
-d 2230 223f将 DS:1234 处(小端模式)存储的 64-bit 整数与 DS:2234 处(小端模式)存储的 64-bit 整数相加并存回 DS:1234 处.

原程序不需要修改. 运行和查看结果:
-a
# 程序段
-g 10C计算 
修改后程序:
MOV SI,1000
MOV DI,2000
MOV CX,0F
MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
LOOP 109运行和查看结果:
-a
# 程序段
-a 1000
db "This's a string."
-g 111
-d 2000 201f将 1000H 处开始的 0x0f 个字节(即字符串 This's a string. )复制至 2000H 处.

指令: INT 3;
无符号数:
-e 100
cc
-u 100 100寄存器间接寻址.
使用 D 命令查看相应地址数据.
否.
CS:IP 正确时.
- 掌握汇编语言程序上机过程.
- 掌握汇编语言结构.
- 学习汇编语言的伪操作.
- 了解汇编程序、连接程序、DOS 系统装入和返回功能.
- 掌握用 DEBUG 调试汇编语言程序的方法.
编写完整的汇编语言程序: 从变量 DD1 开始存放 DD2 单元的源程序.
- 硬件环境: AMD Ryzen 9.
- 软件环境: Windows XP Pro SP3 (in VMware Workstation 16 Pro).
- 编辑程序: Visual Studio Code 1.62.3.
- 调试程序:
DEBUG.EXE. - 编译程序:
MASM.EXE. - 连接程序:
LINK.EXE.
若文件有语法错误,根据错误提示,返回(1),修改源文件;
若无错,则形成 .OBJ 目标文件和 .LST 列表文件.
若有错,根据错误提示,返回(1),修改错误;
若无错,则形成 .EXE 可执行文件和 .MAP 映像文件.
DOS下直接键入可执行文件名,即可执行该程序. 若运行结果不对,需调试程序,查找原因:
- 返回步骤(1)查看源文件,查找错误,修改文件;
- 若无法通过查看源文件找出错误,可在 DEBUG 下调试
.EXE文件,找出错误之处,再返回步骤(1)修改源文件.
可使用如下脚本快速编译连接运行:
@REM code by hyper
@REM edit by userElaina
set /p file="Enter file name: "
set CC=masm.exe
set LD=link.exe
echo _compile_
%CC% %file%.asm
echo _link_
%LD% %file%.obj
echo _execute_
%file%.exe
pause程序结束.
一个段的大小通常为 64KB.
不一定.
使用 D 命令查看.
- 进一步熟悉 DEBUG 的使用方法.
- 掌握汇编语言程序的编辑/汇编/连接以及调试过程.
试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来.
- 硬件环境: AMD Ryzen 9.
- 软件环境: Windows XP Pro SP3 (in VMware Workstation 16 Pro).
- 编辑程序: Visual Studio Code 1.62.3.
- 调试程序:
DEBUG.EXE. - 编译程序:
MASM.EXE. - 连接程序:
LINK.EXE.
不行.
正常编译连接,运行后显示功能正常,但按 ESC 无法回到DOS,同时光标在界面内快速跳跃闪动,CPU消耗大幅度增加.
若直接双击运行,则按 ESC 时直接退出.









