微机原理与接口技术
实验指导书
计算机科学系
第一章 软件实验项目
§1.1 汇编环境简介
1、汇编语言源程序编辑
建立汇编语言程序可以使用多种方法
(1)使用 EDIT 建立汇编语言程序
使用汇编环境下自带的 EDIT.EXE 文件进行文件的编辑。
格式:EDIT 文件名.ASM (回车)
(2)使用 PE2 建立汇编语言程序
在 DOS 提示符下使用 PE2 编辑器输入用户汇编语言程序 (扩展名为.ASM)。
格式:PE2 文件名.ASM (回车)
(3)使用 SK 建立汇编语言程序
使用 SK2 热键启动 SK
2、汇编程序生成目标程序
经过编辑命令建立的汇编语言源程序使用汇编程序编译成目标程序。
(1) 使用 MASM 宏汇编进行编译
> MASM 文件名
在汇编程序调入后,先显示版本号,然后出现第一行提示,
Object filename [源文件名.OBJ]: ;默认该文件名回车。
Source Listing [NUL.LST] : 源文件名或其他 ;输入文件名建立可打印文件。
Cross Reference [NUL.CRF]: 源文件名或其他 ;回车。
Warning Errors
severe Errors
如果汇编过程中发现源程序有错误,由以上两种错误类型分别列出。此时可分析错误原因,返
回编辑程序修改源程序。
汇编程序出错信息见 《 汇编程序出错信息表 》, 注意出错的类型及出错的源文件对应行。
若不需要产生 .LST 和 .CRF 文件, 可在 > 下加";"
> MASM 文件名;
(2)使用 TASM 进行编译
例如:编译 A.ASM 文件。
TASM A <Enter>
Turbo Assembler Version 2.5 Copyright (c) 1988,1991
Borland International
Assembling file: a.ASM
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 162k
可按要求填加必要的选择。例如若需要在 TD 中跟踪源文件调试,可使用/zi 选择(应注意选择项
英文的大小写):
>TASM /zi A <Enter>
若要生成列表文件,可用如下操作:
>TASM A ,,A.LST <Enter>
TASM 的选择项如下(可用 /H 显示):
Syntax: TASM [options] source [,object] [,listing] [,xref]
/a,/s Alphabetic or Source-code segment ordering
/c Generate cross-reference in listing
/dSYM[=VAL] Define symbol SYM = 0, or = value VAL
/e,/r Emulated or Real floating-point instructions
/h,/? Display this help screen
/iPATH Search PATH for include files
/jCMD Jam in an assembler directive CMD (eg. /jIDEAL)
/kh# Hash table capacity # symbols
/l,/la Generate listing: l=normal listing, la=expanded listing
/ml,/mx,/mu Case sensitivity on symbols: ml=all, mx=globals, mu=none
/mv# Set maximum valid length for symbols
/m# Allow # multiple passes to resolve forward references
/n Suppress symbol tables in listing
/o,/op Generate overlay object code, Phar Lap-style 32-bit fixups
/p Check for code segment overrides in protected mode
/q Suppress OBJ records not needed for linking
/t Suppress messages if successful assembly
/w0,/w1,/w2 Set warning level: w0=none, w1=w2=warnings on
/w-xxx,/w+xxx Disable (-) or enable (+) warning xxx
/x Include false conditionals in listing
/z Display source line with error message
/zi,/zd Debug info: zi=full, zd=line numbers only
3、链接程序生成可执行文件
由汇编后建立的目标码文件,必须经过链接后才能生成可执行的命令文件。
(1)使用 LINK 完成连接
>LINK 文件名 ;回车后调入链接程序,此时屏幕显示。
Run File [文件名.EXE]: ;回车默认该文件名。
List File [NUL.MAP]: ;
Libraries [ .LIB]: ;回车。
Warning: ;提示错误。
如果有错误,返回编辑程序重新修改源程序。
若要生成 .COM 文件, 则用 EXE2BIN 实现:
> EXE2BIN A.EXE A.COM
(2)使用 TLINK 完成连接
例如:链接 A 文件。
>TLINK A <Enter>
Turbo Link Version 4.0 Copyright (c) 1991 Borland International
可按要求填加必要的选择。例如若需要在 Debug 中跟踪源文件调试,应使用/V 选择 (应注意选择
项英文的大小写):
>TLINK /v A <Enter>
若要生成 COM 文件,可使用 /Tdc 选择:
>TLINK /Tdc A <Enter>
TLINK 的选择项如下(可用 /H 显示):
Syntax: TLINK objfiles, exefile, mapfile, libfiles, deffile
@xxxx indicates use response file xxxx
Options:
/m = map file with publics
/x = no map file at all
/i = initialize all segments
/l = include source line numbers
/L = specify library search paths
/s = detailed map of segments
/n = no default libraries
/d = warn if duplicate symbols in libraries
/c = lower case significant in symbols
/3 = enable 32-bit processing
/v = include full symbolic debug information
/e = ignore Extended Dictionary
/t = create COM file (same as /Tc)
/o = overlay switch
/P[=NNNNN] = pack code segments
/A=NNNN = set NewExe segment alignment factor
/ye = expanded memory swapping
/yx = extended memory swapping
/C = case sensitive exports and imports
/Txx = specify output file type
/Tdx = DOS image (default)
/Twx = Windows image
(third letter can be c=COM, e=EXE, d=DLL)
4、汇编语言动态调试工具调试汇编程序
(1)使用 DEBUG 进行调试
DEBUG 是专为汇编语言设计的一种调试工具,可用来检查,修改存储单元和寄存器的内容装入,存
储及启动运行程序,也可用 DEBUG 汇编简单的汇编语言程序。
> DEBUG 文件名.EXE
- ; "-" 是 DEBUG 的提示符
DEBUG 下的基本命令及格式 ( 具体见 《 DEBUG 使用说明 》)
命 令 任 务 格 式
A(Assmble) 汇编语句 A[address]
C(Compare) 比较内存 C range address
D(Dump) 显示内存 D [address]
E(Enter) 改变内存 E address list
F(Fill) 填充内存 F range list
G(GO) 执行程序 G [address]
H(Hexarthmetic) 十六进制运算 H Value Value
I(Input) 输入 I port address
L(Load) 装入内存 L[address]
M(Move) 传送内存 M range range
N(Name) 定义文件 N [d:][path]filename[.com]
O(out put) 输出字节 O port address byte
Q(Quit) 退 出 DEBUG 状态 Q
R((Register) 显示寄存器 R[register name]
S(Search) 检索字符 S rang list
T(Trace) 单步/多步跟踪 T orT[address][value]
U(Unassmble) 反汇编 U [address]orU[range]
W(Write) 文件或数据写盘 W [address[drive sector sector]]
(2)使用 TD ( Turbo Debugger ) 调试汇编程序
TD 设计具有 Turbo 系列语言的特点,其多重覆盖窗口、下拉菜单和弹出菜单的结合给用户提供了
一个快速友好的交互环境,帮助系统使用十分方便。以下给出常用操作命令,具体命令见《 Turbo
Debugger 命令一览表 》。
启动 Turbo Debugger
Syntax: >TD objfiles
例如: 调试已编译链接后的 A 文件:
> TD A <Enter>
进入 TD 后屏幕显示
下拉菜单栏: 在屏幕的上端
代码区域 : 按地址,机器码及助记符组成
寄存器域 : CPU 中寄存器内容
标志域 : CPU 中所有标志状态
堆栈区域 : 当前堆栈内容
数据区域 : 以地址, ASCII 码值及 ASCII 码显示数据
常用命令栏: 在屏幕下端
屏幕中间区域可通过 TAB 键移动
F10 或 Alt - 进入菜单提示栏,回车选择对应菜单
例如: Alt - F 进入屏幕上端的 File 栏, 回车后显示下拉菜单,移动光标可选择相应
功能。
Alt - F10 访问局部菜单 通过该命令,用户可容易的进入当前栏的局部菜单。
窗口命令使用下拉菜单的 Window, 可进入多窗口显示,用户可调试窗口的位置和大小,以最佳
的方式观察程序执行过程同时可切换不同显示窗口。
常用执行命令在常用命令栏有提示,以下给出常用命令:
连续慢速执行 在 RUN 菜单下选择 Animate
反向跟踪执行 Alt - F4
断点方式执行 用 F2 设断点,使用 RUN 命令后停在断点处