大小写不敏感

常用指令

R命令 ——> 查看、改变CPU寄存器里的内容

如:r ax --> 对ax中的内容进修改

D命令 ——> 查看内存中的内容

如 d 段地址:偏移地址
或者 d 段地址:偏移地址 数值 --> 表示查看内存中该物理地址几个字节的数据
如图
指令-小白菜博客
表示查看内存中 1000: 0 中 8个字节的数据

E命令 ——> 改写内存中的内容

格式: e 段地址:偏移地址
指令-小白菜博客
如图,原本为6F的数据,经过e命令后变成66

U命令 ——> 将内存中的机器指令翻译成汇编指令

格式:u 段地址:偏移地址
如图
指令-小白菜博客
将该物理地址中的机器指令转化成汇编指令后展示出来

T命令 ——> 执行一条机器指令

A命令 ——> 以汇编指令的格式在内存中写入一条机器指令

如:a 段地址:偏移地址 --> 从该物理地址中开始写入汇编指令

quit(q) --> 退出

exit --> 退出

p命令

(1)在执行到 int 21H 时,p命令使得程序正常停止
(2)在执行到 loop 时,p命令使得程序实现循环进入循环之下的一个语句

如图

我们可以看见cx的值清零了,而ax的值变成了1000

我们还可以看到经过 p指令 后它进入到 mov ax,4c00 --> 跳过了 loop循环的过程

g命令 --> 跳到所指向的ip的语句(会将该ip之前的程序完成)

格式为:g 偏移地址
如:g 0014 --> 跳到偏移地址为 0014 的语句上

如图

我们还可以看到经过 g指令 后它进入到 mov ax,4c00 --> 跳过了 ip < 000A 的所有语句的过程,直接到达ip == 000A的语句上

mov指令(传送指令)

将数据直接送入寄存器

将一个寄存器中的内容送入另一个寄存器中

将一个内存单元中的内容送入一个寄存器中

格式(mov 寄存器名,内存单元地址)(数据 --> 通用寄存器 --> 段寄存器)

mov bx,1000H(给 bx 段地址)
mov ds,bx
mov al,[0](【···】表示一个内存单元,0 表示内存单元的偏移地址)

PS:段寄存器(ds)不能直接存储具体的段地址 如:mov ds,1000H --> 是错误的 要先讲段地址存在通用寄存器中,再通过通用寄存器转移到段寄存器中 如 mov bx,1000H --> mov ds,bx --> 这样才是正确的

上面三条指令将10000H(1000:0)中的数据读到al中
如:mov ax,123 --> 将123转移到ax中

jmp转移指令

jmp 段地址:偏移地址
jmp 2AE3:3 --> 2AE33
jmp 3:0B16 --> 003B16

仅修改IP的内容(即仅修改偏移地址)

jmp 某一合法寄存器
jmp ax(类似与mov ip,ax)
jmp bx

add相加指令 sub相减指令

用法同 mov 差不多

inc 自增指令

如inc bx --> 使bx中的数据自增 1

dec 自减指令

如dec bx --> 使bx中的数据自减 1

div 除法指令

div 格式

div 寄存器 --> 由寄存器里的数据充当除数

div 内存单元 --> 由内存单元里的数据充当除数

除数:8位 / 16位,在寄存器或者内存单元中

被除数:(默认)放在 AX 或 DX 和 AX 中

如:

除数 被除数(这里简称 8位除法 和 16位除法)

8位  16位(放在AX中)

16位 32位(放在DX+AX中)

结果:(存放地点)

运算 8位 16位

  商  AL  AX

余数 AH DX

示例:
div byte ptr ds:[0]
al 里存放的是 ax/(ds:[0] --> 存放的数据)的商
ah 里存放的是 ax/(ds:[0] --> 存放的数据)的余数

div word ptr es:[0]
ax 里存放的是 (dx10000H+ax)/(es:[0] --> 存放的数据)的商
dx 里存放的是 (dx
10000H+ax)/(es:[0] --> 存放的数据)的余数
为什么是 dx10000H ?
首先我们知道,当除数是16位时,被除数只能是32位的,由于寄存器最高就是16位的,那么我们改怎么表示32位的数据呢
我们可以这样想32 = 16+16,也就是两个寄存器所以通过 dx
10000H 来换成 32位 的数据达到目的

当被除数大于65535时,首先先讲被除数转化成16进制

如100001 --> 186A1H
然后将超出部分扔到 dx 中
如:计算100001/100;
如图
指令-小白菜博客
计算结果是 ax 存放商,dx 中存放余数

判断用改用8位除法还是16位除法的方法:看被除数是否超过65535即可,超过用16位除法,反之用8位除法