debug命令(truead)
使用debug命令时需要先输入dir命令
(mount c d:/masm611->c:->dir->debug)(进入debug界面
)
t是指使汇编语句执行一句
r是指显示当前内存中AX,BX,……等内容
u是指以汇编形式显示内容
e是指修改内存中的内容,在某一物理地址上写入内容
a是指修改以汇编代码写入汇编代码
d是指显示内存中的数据
具体指令
add 寄存器1 寄存器2 相加指令(将数据加到第一个寄存器上)
sub 寄存器1 寄存器2 相减指令 (将寄存器1的数组减去寄存器2中的数据,并将结果存在寄存器1上)
mul 寄存器 B 相乘指令(数据默认是其中一个乘数存储在寄存器AX里面,将此时的寄存器以寄存器B相乘,然后将结果存储在寄存器AX中,如果结果超过16位就将数据AX(低十六位),DX(高十六位)中)
div 寄存器B 相除指令(被除数如果超过16位就存储在AX(低十六位),DX(高十六位)中,如果被除数不超过16位就存储在AX中)(结果:将算出的结果的商存储在AX,余数存储在DX,)
and与or操作,可以将寄存器里面的数和一个数进行and,or操作
左移:shl(普通左移)与rol(循环左移)
右移shr(普通右移动)与ror(循环右移)
在左移和右移动过程中,如果移动位数大于1需要将移动的位数存放在cl中
inc(increase)自增相当于C语言里面的++
dec(decrease)自减相当于C语言里面的--
nop(并没有什么实际意义,指令占据一个字节)
xchg(exchage)交换指令
word prt强制类型转换为一个字(两个字节,16位)
jmp 段地址:偏移地址指定跳转地址
jmp 寄存器是指将IP的值修改为2寄存器里面所存储的数值,从而实现跳转
mov指令
例如:mov ax,[bx+数字]但是其他的通用寄存器不可以,bx,di都可以用作偏移地址来使用,使用ax,cx时会报错
mov dx,[bx+si]
dx,[bx+di]但是bx+si+di不行
寄存器寻址
寻址方式 | 格式 |
立即数寻址 | [idata] |
寄存器间接寻址 | [bx][bp][si][di] |
寄存器相对寻址 | [bx+idata][bp+idata][si+idata][di+idata] |
基址变址寻址 | [bx+si][bx+di][bp+si][bp+di] |
相对基址变址寻址 | [bx+si+idata][bx+di+idata][bp+si+idata][bp+di+idata] |
标志位
ZF(zero flag)零标志位如果计算结果为零显示ZR(zero)否则显示NZ(not zero)
PF(parity flag)奇偶标志位如果结果为PO(parity odd)表示奇数,如果为PE(parity even)表示偶数
SF(sign flag)符号标志位如果结果为负数显示NG(negative)表示负数否则显示PL(positive)表示正数
CF(carry flag)进位标志位如果没有溢出显示NC(not carry),溢出显示CY(carry ……)
OF(overflow flag)溢出标志如果数据溢出显示OV(overflow)否则显示NV(not overflow)没有溢出
数据如果时有符号位范围为-128~127无符号位位0~255