直接将 8086/8087/8088 记忆码合并到
内存。使用不含参数的 a 会从它最后停止的位置开始汇编。
MS-
DOS命令语法
a [address]
MS-
DOS命令参数
address指定键入汇编语言指令的位置。对 address 使用十六进制值,并键入不以 h 字符结尾的每个值。?显示 debug 子命令列表。MS-
DOS命令注释
指定有效的 address 项Address 是一个包含字母段记录的二位名称或一个四位字段地址加上一个偏移量。可以忽略段寄存器或段地址。CS 是下列“调试”子命令的默认段:a、g、l、t、u 和 w。所有其它命令的默认段是 DS。所有数值均为十六进制格式。段名和偏移量之间必须包含冒号。有效地址如下:
CS:0100
04BA:0100
指定前缀记忆码在的操作代码(操作码)前指定前缀记忆码。a 子命令使用汇编语言语句创建可执行的机器码。所有数值都是十六进制格式,必须按一到四个字符输入这些数值。
使用记忆码段的替代记忆码为 cs:、ds:、es: 和 ss:。远程返回的记忆码是 retf。字符串处理的记忆码必须明确声明字符串大小。例如,使用 movsw 可以移动 16 位的字串,使用 movsb 可以移动 8 位字节串。
汇编跳转和调用汇编程序根据字节替换自动将跳转或调用(短、近和远)汇编到目标地址。可以使用 near 或 far 前缀来替代跳转或调用。例如:
-a0100:0500
0100:0500 jmp 502 ; a 2-byte short jump
0100:0502 jmp near 505 ; a 3-byte near jump
0100:0505 jmp far 50a ; a 5-byte far jump
可以将 near 前缀缩写为 ne。
区分字和字节内存位置当操作数指的是字内存地址或字节内存地址时,必须使用
word ptr 前缀或 byte ptr 前缀来指定数据类型。
word ptr 可缩写为 wo,而 byte ptr 则可缩写为 by。例如:
dec wo [si]
neg byte ptr [128]
指定操作数Debug.exe 采用的习惯方式是将内存地址的操作数包括在中括号 ([ ])中。这是 Debug.exe 能够区分直接操作数和内存地址操作数的唯一方法。例如:
mov ax,21 ; load AX with 21h
mov ax,[21] ; load AX with the
; contents of
; memory location 21h
使用伪指令随 a 子命令可使用两个通用的伪指令:db 操作码,它将字节值直接汇编进内存;dw 操作码,它将字值直接汇编进内存。例如:
db 1,2,3,4,"THIS IS AN EXAMPLE"
db 'THIS IS A QUOTATION MARK: "'
db "THIS IS A QUOTATION MARK: '"
dw 1000,2000,3000,"BACH"
将数据输入指定字节有关使用 e (enter) 子命令将数据输入指定字节的详细信息,请参阅“相关主题”。
分解字节有关使用 u (unassemble) 子命令分解字节的详细信息,请参阅“相关主题”。
MS-
DOS命令范例
a 子命令提供了所有形式的寄存器间接命令。例如:
add bx,34[bp+2].[si-1]
pop [bp+di]
push [si] }
a 子命令还支持所有的操作码同义字。例如:
loopz 100
loope 100
ja 200
jnbe 200
对于 8087 操作码,必须指定 wait 或 fwait 前缀。例如:
fwait fadd st,st(3) ; this line assembles
; an fwait prefix