debug 用法
1.查看、修改 cpu 中寄存器的内容:R
2.查看内存中的内容:D
3.修改内存中的内容:E(可以写入数据、命令,无区别)
4.将内存中的内容解释为机器指令和对应的汇编指令:U
5.执行 CS:IP 指向的内存单元的指令:T
6.以汇编指令的形式向内存中写入命令:A
7.G命令可以直接让IP跳到指定位置,如g 0012
,会使IP跳到0012的位置。
8.用p命令可以从循环中一次循环完。也可以用g命令,直接跳到指定位置。
(T命令在执行修改寄存器SS的指令时,下一条指令也紧接着执行)
寄存器(内存访问)
字单元:存放一个字型数据(16 位)的内存单元,由两个地址连续的内存单元组成。高地址存高位字节,低地址存地位字节。
DS 和[address]
DS 通常用来存放要访问数据的段地址。
将 10000H 中的数据读到 al 中 :
mov bx,1000H
mov ds,bx
mov al,[0]
mov 指令中的[]
说明操作对象是一个内存单元,[]
中的 0
说明偏移地址是 0,段地址默认是 ds
。8086cpu 不支持将数据直接送入段寄存器,而是要用一个寄存器中转,即mov ds,1000H
是非法的。
add
、sub
对段寄存器都是非法的,即add ds,ax
,add ds,1
,add, ds,[1]
都是非法的。
综上,段寄存器的相关操作有:
mov 段寄存器,寄存器
mov 寄存器,段寄存器
mov 段寄存器,内存单元
mov 内存单元,段寄存器
即段寄存器可以用 mov 与寄存器和内存单元进行操作(不能与数据),不能用add
、sub
栈
push
入栈,pop
出栈,如push ax
,pop ax
,
SS:SP
用来指向栈顶元素。

如图,8086入栈时,栈顶从高地址向低地址方向增长。因为任意时刻
SS:SP
指向栈顶,所以当栈为空时,SS:SP
指向栈的最底部单元下面的单元。
pop与push相反

8086不保证我们对栈的操作不会过界,我们只能自己注意。
push和pop操作形式有如下几种:
push 寄存器/段寄存器/内存单元
pop 寄存器/段寄存器/内存单元
段
段是我们人为规定的。
- 数据段:段地址放在DS中,用mov、add、sub等访问内存单元的指令时,cpu就将我们单一的数据段中的内容当成数据来看。
- 代码段:段地址放在CS中,段中第一条指令的偏移地址放在IP中,cpu将执行指令。
- 栈段:段地址放在SS中,栈顶元素的偏移地址放在SP中,cpu进行站操作如push、pop时将栈段当做栈空间操作。
一段内存可以既是代码段又是数据段,又是栈段,也可以都不是。这取决于CS、IP、SS、SP、DS的指向。
第一个程序
汇编语言源程序包含两种指令:
1.汇编指令:有对应机器码,可以被编译为机器指令,最终被cpu执行。
2.伪指令:没有对应机器码,不被cpu执行,由编译器来执行。
assume cs:abc
abc segment
mov ax,2
add ax,ax
add ax,ax
mov ax,4c00H
int 21H
abc ends
end
segment
segment
和 ends
是一对成对使用的伪指令,是必须要用到的一对伪指令,用来定义一个段,使用格式为:
段名 segment
..
段名 ends
一个汇编程序由多个段组成,这些段用来存放代码、数据或当做栈空间。一个有意义的汇编程序必须要有一个代码段。
end
end
是会变程序结束的标记,不要搞混end
和ends
,ends
是和segment
成对使用的。
assume
这条伪指令含义是“假设”,它假设某一段寄存器和程序的某一个用segment...ends
定义的段相关联。只要记住assume是将有特定用途的段和相关联的段寄存器关联起来即可。
比如,用cname segment... cname ends
定义了一个名为cname
的段,在程序开头,用assume cs:cname
将cname
段和cs
联系起来。
程序返回需要使用以下2条语句:
mov ax,4c00H
int 21H
loop
作用是循环,cpu执行loop的时候,进行2部操作:
1.(cx)=(cx)-1
2.判断cx中的值,不为0则转到标号处执行,否则向下执行
网友评论