汇编语言学习笔记部分 点击:169 | 回复:0



pc5125117

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 11回
  • 年度积分:0
  • 历史总积分:12
  • 注册:2012年7月10日
发表于:2016-12-20 09:47:32
楼主



命令


-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





热门招聘
相关主题

官方公众号

智造工程师