命令
-R 查看、修改CPU中寄存器的内容
-r 1000:0
-D 查看内存中的内容
-d 1000:0
-E 修改内存中的内容(可以写入数据、指令,在内存中,他们实际上没有区别)
-e 1000:0
-U 将内存中的内容解释为机器指令和对应的汇编指令
-u 1000:0
-T 执行CS:IP指向的内存单元处的指令
-t
-A 以汇编指令的形式向内存中写入指令
-a
mov ax,1
mov bx,2
[addres]表示一个偏移地址地址address的内存单元
mov bx,1000h
mov ds,bx
mov al,[0]
其中 [0] 0代表的是偏移地址 以上的信息即1000:0
任意时刻,SS:IP 指向栈顶元素 SS存放栈顶的段地址 IP存放栈顶的偏移地址
PUSH指令的执行步骤: SP=SP-2 向SS:SP指向的字单元中送入数据
POP指令的执行步骤: SS:SP 指向的字单元中读取数据 SP=SP+2
存放数据,将它定义为“数据段”
存放代码,将它定义为“代码段”
当作栈,将它定义为“栈段”
对于数据段,将它的段地址放在DS中,用mov,add,sub 等访问内存单元的指令时,CPU就将我们定义的数据段中的内容当作数据来访问;
对于代码段,将它的段地址放在CS中,将段中第一条指令的偏移地址放在IP中,这样CPU就将执行我们定义的代码段中的指令;
对于栈段,将它的段地址放在SS中,将栈顶单元的偏移地址放在SP中,这样的CPU在需要进行栈操作的时候,比如执行push,pop指令等,就将我们的栈段当作栈空间来用。
CPU将内存中的某段内容当作代码,是因CS:IP指向了那里;CPU将某段内存当作栈,是因为SS:SP指向了那里。
mov
add 运算指令
add ax,1
add ax,bx
ret指令用在栈中的数据,修改IP的内容,从而实现近转移。
pop ip
retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。
pop ip
pop cs
LOOP指令为循环指令。 相当于(cx)=(cx)-1 ; 如果(cx)≠0 (IP)=(IP)+8位位移
jcxz指令为有条件转移指令, (cx)=0,转移到标号处执行
offset指令取得标号的偏移地址。 start:mov ax,offset start 相当于 mov ax,0
s:mov ax,offset s 相当于 mov ax,3
call s 相当于
push ip
jmp s
call far ptr s 记录地址 相当于
push cs
push ip
jmp s