Debug 调试程序
了解并掌握汇编语言源程序上机练习的过程(四个步骤):
编辑、汇编、连接和调试。
热身:Debug 调试程序
- masm test.asm 生成obj文件
- link test 连接成exe可执行文件
- debug test.exe 调试test.exe程序
具体指令 | 作用 |
---|---|
-t | 单步执行程序 |
-g [memory] | 程序具体执行到memory处 |
-d | 查看内存空间 |
-d [memory] | 查看具体内存空间的值 |
题目一
X = 30,Y = 15,求 X + Y,X - Y,X * Y 分别保存至 z1,z2,z3 变量中。
STACK SEGMENT
DW 200 DUP(?)
STACK ENDS
DATA SEGMENT
X DW 30
Y DW 15
Z1 DW ?
Z2 DW ?
Z3 DW ?
DATA ENDS
CODE SEGMENT
ASSUME SS:STACK,DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
;Z1=X+Y
MOV AX,X
ADD AX,Y
MOV Z1,AX
;Z2=X-Y
MOV AX,X
SUB AX,Y
MOV Z2,AX
;Z3=X*Y
MOV AL,BYTE PTR X
MUL BYTE PTR Y
MOV Z3,AX
MOV AX,4C00H
INT 21H
CODE ENDS
END START
同学的代码
.model small
.data
; 定义数据段的内容
x db 30
y db 15
z1 db ?
z2 db ?
z3 dw ?
.code
start
; 下面两条语句是将data段与数据段绑定
mov ax, @data
mov ds, ax
mov al, x
add al, y
mov z1, al
mov al, x
sub al, y
mov z2, al
mov ah, 0
mov al, x
mul y
mov z3, ax
mov ax, 4c00h
int 21h
end start
运行结果
2D:45(30+15) 0F:15(30-15) 01C2:450(15*30)
可能使用到的指令
SUB DST,SRC DST = DST + SRC ADD DST,
SRC DST = DST + SRC MUL SRC 无符号乘法
其中如果SRC是字节变量,则 AX = AL * SRC
其中如果SRC是字变量,则DX:AX = AX * SRC
汇编程序模板
.model small
.data
; 定义数据段的内容
.code
start:
; 下面两条语句是将data段与数据段绑定
mov ax,@data
mov ds,ax
mov ax,4c00h
int 21h
end start