学汇编,记笔记(三)《汇编语》王爽著——环境搭建及第一个程序

386 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

学习教材:《汇编语言(第4版)》王爽著 此笔记是书中内容+自我总结,方便查阅和复习 请支持原著

一、环境搭建

系统

VMware虚拟机安装Windows XP professional with SP2

MSDN镜像网 使用xunlei等下载ED2K链接

在这里插入图片描述

软件

Masm for Windows 集成实验环境 V5.0

Masm for Windows 集成实验环境下载

二、编写汇编程序

写汇编程序时,第一步写的文件是源程序文件,后缀为.asm;第二步对源程序编译,得到目标文件.obj;第三步将目标文件与源程序链接,生成.exe可执行文件

源程序它包括汇编指令和伪指令:

;这是注释,分号开头
assume cs:codesg  ;初始化,CS指向codesg代码段

codesg segment ;定义名叫codesg的代码段
	;以下是汇编指令
	mov ax,0123h
	mov bx,0456h
	add ax,bx
	add ax,ax
	
	mov ax,4c00h ;这两条指令实现程序的返回
	int 21h
	
codesg ends ;段结束

end ;程序结束

在这里插入图片描述 编写结束点击上方的运行,一键自动生成目标文件并完成连接,最后得到可执行文件

建议不要将源程序保存在桌面或是名称过长的英文路径下,可能导致某些错误

在这里插入图片描述 这里得到的可执行文件要用CMD运行,拖入即可

三、使用debug跟踪程序的运行

使用CMD的debug xxx.exe将程序加载到debug中进行分析

-r指令:查看初始化寄存器情况

r指令用于查看加载到内存后各个寄存器的情况 在这里插入图片描述

  • CX显示程序机器码长度为15字节
  • DS显示exe文件被加载到的地址为0B2F:0000,系统会寻找一段起始为DS:0000的空内存加载exe文件
  • CS:IP指向第一条汇编代码的地址0B3F:0000,DS和CS:IP之间为exe文件的程序段前缀(PSP),固定长度256字节(100H)

-u指令:查看机器码

u指令查看程序的机器码

在这里插入图片描述

机器码的地址从0B3F:0000~0B3F:000E,印证了CS:IP确实指向了第一条指令

-t指令:单步执行

t指令用于单步执行指令

在这里插入图片描述 当运行到最后一条指令int 21时,使用p指令结束

在这里插入图片描述

-q指令:退出debug

使用q指令退出debug返回cmd