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

我的博客

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

[2008-12-02 18:14] 第11章看起来好简单啊!

应该能很快完成吧,嘿嘿……...
阅读全文 | 评论次数(1) | 浏览次数(1133) | 所属类型(研究些正经的)

[2008-12-02 15:42] 第10章检测题一次通过!

撒花,庆祝~...
阅读全文 | 评论次数(1) | 浏览次数(893) | 所属类型(研究些正经的)

[2008-11-26 16:42] 终于看到实验10啦!

兴奋!明天来做。。...
阅读全文 | 评论次数(0) | 浏览次数(642) | 所属类型(研究些正经的)

[2008-11-26 16:39] 10.12笔记

解决寄存器使用冲突的方法:
在子程序的开始将子程序中所有用到的寄存器中的内容都保存起来,在子程序返回前再恢复。我们可以用栈来保存寄存器中的内容。

编写子程序的标准框架:
子程序开始:子程序中使用的寄存器入栈
            子程序内容
            子程序中使用的寄存器出栈
            返回(ret,retf)...
阅读全文 | 评论次数(0) | 浏览次数(691) | 所属类型(研究些正经的)

[2008-11-19 10:37] ret和call指令

ret:
1)(IP)=((SS)*16+(SP))
2)(SP)=(SP)+2

retf:
1)(IP)=((SS)*16+(SP))
2)(SP)=(SP)+2
3)(CS)=((SS)*16+(SP))
4)(SP)=(SP)+2

call 标号
1)(SP)=(SP)-2
2)((SS)*16+(SP))=(IP)
3)(IP)=(IP)+16位位移

call far ptr 标号
1)(SP)=(SP)-2
  ((SS)*16+(SP))=(CS)
  (SP)=(SP)-2
  ((SS)*16+(SP))=(IP)
2)(CS)=标...
阅读全文 | 评论次数(2) | 浏览次数(350) | 所属类型(研究些正经的)

[2008-11-15 09:21] jmp指令有点绕

-依据位移进行转移的jmp指令:
1)jmp short 标号 -128~127
2)jmp near ptr 标号 -32768~32767

-转移的目的地址在指令中的jmp指令
jmp far ptr 标号
用标号的段地址和偏移地址修改CS和IP.

-转移地址在寄存器中的jmp指令
jmp 16位寄存器
功能:(IP)=(16位寄存器)

-转移地址在内存中的jmp指令
1)jmp word ptr 内存单元地址(段内转移)
功能:(IP)=(内存单元地址)
2)jmp dword ptr 内存单元地址(段内转移)
功能:(CS)=(内存单元地址+2) ...
阅读全文 | 评论次数(2) | 浏览次数(326) | 所属类型(研究些正经的)

[2008-11-10 12:04] 8.6寻址方式的综合应用

一般来说,我们可以用[bx+si+idata]的方式来访问结构体中的数据.用bx定位整个结构体,用idata定位结构体中的某一个数据项,用si定位数组项中的每个元素.因此,汇编语言提供了更为贴切的书写方式,如:[bx].idata、[bx].idata[si]....
阅读全文 | 评论次数(0) | 浏览次数(248) | 所属类型(研究些正经的)

[2008-11-10 11:15] 8.1 bx,si,di,bp

(1)在8086CPU中,只有这4个寄存器可以用在[...]中来进行内存单元的寻址.

(2)在[...]中,这4个寄存器可以单独出现,或只能以四种组合出现:bx和si,bx和di,bp和si,bp和di.比如下面的指令是正确的:
mov ax,[bx]
mov ax,[si]
mov ax,[di]
mov ax,[bp]
mov ax,[bx+si]
mov ax,[bx+di]
mov ax,[bp+si]
mov ax,[bp+di]
mov ax,[bx+si+idata]
mov ax,[bx+di+idata]
mov ax,[bp+si+idata] ...
阅读全文 | 评论次数(0) | 浏览次数(293) | 所属类型(研究些正经的)

[2008-10-30 12:04] 6.1学习笔记

伪指令end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方.

根据什么设置CPU的CS:IP指向程序的第一条要执行的指令?这是由可执行文件中的描述信息指明的.我们知道可执行程序由描述信息和程序组成,程序来自与汇编源程序中的汇编指令和定义的数据;描述信息则主要是编译,连接程序对源程序中相关伪指令进行处理所得到的信息.

归根结底,我们若要CPU从何处开始执行程序,只要在源程序中用"end 标号"指明就可以了....
阅读全文 | 评论次数(0) | 浏览次数(366) | 所属类型(研究些正经的)

[2008-10-27 15:35] 5.4学习笔记

DEBUG和汇编编译器MASM对形如"MOV AX,[0]"这类指令在解释上不同,
DEBUG将它解释为"[idata]"是一个内存单元,"idata"是内存单元的偏移地址;而编译器将"[idata]"就解释为"idata".

1.我们在汇编源程序中,如果用指令访问一个内存单元,则在指令中必须用[...]来表示内存单元,如果在"[]"中用一个常量idata直接给出内存单元的偏移地址,就要在"[]"前面显式给出段地址所在的段寄存器,如mov al,ds:[0]

2.如果在"[]"里用寄存器,比如bx,间接给出内存单元的偏移地址,则段地址默认在ds中,当然,也可以显式地给出段地址所在...
阅读全文 | 评论次数(1) | 浏览次数(316) | 所属类型(研究些正经的)
页码数(2):  1  2