I. 汇编语言入门

汇编程序的结构

一个汇编语言程序的框架如下:

.386  ; 表示每个段默认使用32位偏移宽度
data segment use16  ; 表示端内偏移地址宽度是16位
  变量、数组定义...
data ends
code segment use16
	assume cs:code, ds:data
main:
	mov ax, data
	mov dx, ax
  程序主体...
	mov ah, 4ch
	mov al, 0   ; 这里AL寄存器的值表示程序返回码
	int 21h     ; 调用int21h中断,在AH=4Ch时对应的功能是结束程序
code ends
end main ; 指定程序首条指令的位置
  • assume 建立段地址和段寄存器的关联,这并不会真的修改段寄存器的值,而会帮助编译器在编译源程序时把变量或标号的段地址替换成关联的段寄存器。

编译与运行

略。

调试

使用 debug 调试

  • R 指令:查看、改变 CPU 寄存器的内容
  • D 指令:查看内存中的内容
  • T 指令:执行一条机器指令
  • G 指令:从停顿的地方运行到底

使用 Turbo Debug 调试

需要使用 tasm 编译,tlink 链接:

tasm /zi hello;
tlink /v/s hello;
td hello

常用快捷键如下:

  • F7 单步执行(带跟踪)
  • F8 单步执行(不带跟踪)

使用 soft-ice 调试

其他基础知识

常用中断 int 21h

中断表(中文)参见: https://blog.csdn.net/Zach_z/article/details/78576216

AH功能调用参数返回参数
00程序终止CS=程序段前缀
01键盘输入并回显AL=输入字符
02显示输出DL=输出字符
09显示字符串,DS:DX=字符串地址
4C带返回码结束AL=返回码

Comments