汇编网首页登录博客注册
xiaofengcanyue的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2008-05-08 21:00] 第十章学习笔记

第十章 call和ret指令
总介:call和ret指令都是转移指令,他们都能修改IP或同时修改CS和IP

1.        ret和retf:
             ret修改IP的内容,实现近转移。
             CPU执行如下操作:
                                ⑴(IP)=((SS)*16+(SP))
                                ⑵(SP)=(SP)+2
可以看作:   pop  IP
             retf修改CS和IP的内容,实现远转移。
             CPU执行...
阅读全文 | 评论次数(0) | 浏览次数(750) | 所属类型(学习笔记)

[2008-03-31 21:26] 第六章包含多个段的程序

将数据和指令放在一个段内:
                    必须注明指令的开始。
END的重要用途: ① 通知编译器程序结束
                  ② 还可以通知编译器程序的入口。
     格式:       start:…………end start   start即程序的入口。
程序框架:
       Assume cs:code 
       Code segment
              数据
      Start:
              代码
      Code ends
      End start
将数据、代码和...
阅读全文 | 评论次数(0) | 浏览次数(734) | 所属类型(学习笔记)

[2008-03-30 20:50] 第五章学习笔记

读程序要逐句逐句的读!!!每句的结果都要记录出来。
INC 自增一。
LOOP:(格式)LOOP 标号 ,CPU执行到LOOP时①(CX)=(CX)-1;②判断CX中的值,不为零则转至标号处执行程序,如果为零则向下执行。
在执行LOOP时同时将CX减一。
原理:
     Loop后面的标志符是一个地址,执行loop后将IP的地址改为标志符的地址。
要实现8位存储单元向16位赋值,要先将16位的前八位赋为零。
大于9FFFH的十六进制数据以字母开头,数据不能以字母开头,所以要在前面加个零!!!!
要通过DEBUG一次执行到想要,只要用g +跟踪的地址。
在MASM中:
MO...
阅读全文 | 评论次数(0) | 浏览次数(347) | 所属类型(学习笔记)

[2008-03-15 21:24] 寄存器操作总结

20根的数据总线可以访问1M字节
存储器的分段问题:
                  根据需要把1M字节空间划分成若干逻辑单元但必须满足:
①        逻辑段的开始地址必须是16的倍数;与寄存器长16位有关。
②        逻辑段的最大长度为64字节;与指针寄存器长16位有关。
         因此1M内存最多划分成64K个逻辑单元最少也有16K个单元。
         逻辑段可以相连也可以部分重叠!!!
         看到这里终于明白地址为什么要用段地址加偏移地址来表了,因为存储器的段并不是相连的,且段地址必须为16位的倍数。
寄存器的寻址方式:
                ...
阅读全文 | 评论次数(3) | 浏览次数(396) | 所属类型(学习笔记)

[2007-11-22 22:00] debug的命令

R命令查看、改变CPU寄存器的内容;
D命令查看内存中的内容;
E命令改写内存中的内容;
U命令将内存中的机器指令翻译成汇编指令;
T命令执行一条机器指令;
A命令以汇编指令的格式在内存中写入一条机器指令;
用的时候要注意格式!!...
阅读全文 | 评论次数(2) | 浏览次数(372) | 所属类型(学习笔记)
页码数(1):  1