
一条指令对应的两个操作数位数必须一致
汇编指令: 1、mov x,y 传送:y到x x,y: 寄存器,数据 寄存器,寄存器 寄存器,内存物理地址 内存物理地址,寄存器 内存物理地址,数据 寄存器,内存偏移地址(此时段寄存器默认为ds) 内存偏移地址,寄存器(此时段寄存器默认为ds) 内存偏移地址,数据(此时段寄存器默认为ds) 段寄存器,寄存器 寄存器,段寄存器
2、add x,y 加法:x+y保存于x中 x,y: 寄存器,数据 寄存器,寄存器 寄存器,内存物理地址 内存物理地址,寄存器 内存物理地址,数据 寄存器,内存偏移地址 内存偏移地址,寄存器
3、sub x,y 减法:x-y保存于x中 x,y: 寄存器,数据 寄存器,寄存器 寄存器,内存物理地址 内存物理地址,寄存器 寄存器,内存偏移地址 内存偏移地址,寄存器
4、jmp x x: 物理地址
5、loop mov cx n s: 程序段 loop s(先进行cx-1,再进行判断) loop指令在cx!=0时,自动跳转到s所指的位置 每次跳转cx自动减1(循环计时器只能是cx)
6、push data/寄存器/物理地址1 将data/寄存器/物理地址1中的数据放入ss:sp中,sp=sp-2
7、pop 物理地址1/寄存器 将ss:sp中数据弹出栈,保存于物理地址1/寄存器,sp=sp+2
8086模式的DOS中debug命令 1、r:查看CPU寄存器的内容
2、d:查看内存中的内容 d 段地址:偏移地址
3、e:改写内存中的内容 e 段地址:偏移地址 x x … x
4、u:将内存中的机器指令翻译为汇编指令 u 段地址:偏移地址
5、t:执行一条机器指令 t 执行CS:IP所指向的指令
6、a:以汇编指令的格式在内存中写入一条机器指令 a 段地址:偏移地址 汇编指令 …… a 后不接物理地址汇编指令默认写入数据指针所指地址
7、p p 使得程序直接跳转到末尾
8、__ 物理地址(待补充) 功能:使程序无条件跳转至指定物理地址
9、db、dw、dd(伪指令) 在内存中定义一个数据段 db(definite byte):定义的每一个数据大小为1个字节 dw(definite word):定义的每一个数据大小为1个字 dd(definite double word):定义的每一个数据大小为2个字 用法: xxx segment 上述伪指令:data1,…datan end xxx
10、div x 除法 x: reg(通用寄存器) 内存单元 x用于保存除数 被除数y默认保存在 ax(累加器) 或 ax与dx中 y为16位时,y被保存于ax中,最后商保存在al,余数保存在ah y 为32位时,低位被保存于ax中,高位被保存于dx中(此时x只能是16位) ,最后商保存在ax,余数保存在dx
11、ptr xxx xxx: db dw dd 一般用于指令没有明确要操作的地址空间的大小(无寄存器时) ptr xxx接在指令之后,表示即将访问的内存大小为xxx 例 add [xxxxh],Eh 表明Eh为字节型数据0E
add ptr dw [xxxxh],Eh 表明Eh为字型数据000E
12、xx yy dup (data) xx为伪指令db、dw、dd yy为重复次数 data的单个数据占用内存大小由xx决定 例: name segment db n dup (4E) end name 等价于 name segment db 4E,… ,4E end name 共n个4E,每个数据占用空间大小为1个字节
|