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

我的博客

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

[2011-01-15 21:14]

1.        PUSH指令格式:
PUSH DS/CS/SI/SP;
PUSH [BX];
说明:入栈实质是双操作数指令,PUSH后面的操作数是源操作数,而目的操作数是堆栈栈顶单元;
POP DS/CS/SI/SP;
POP [BX];
说明:源地址和目的地址刚好和PUSH相反;但是注意CS不能作为目的操作数;

进栈的过程是:SP = SP – 2-将AX的内容送SS:SP
出栈的过程是:将SS:SP的内容送AX中-SP = SP – 2

注意栈顶的位置:假设把10000H-1000H当做栈使用,则SP指向的是10010H;另外我们还需要设置SS

之前我们经常使用M...
阅读全文 | 评论次数(0) | 浏览次数(351) | 所属类型(默认类型)

[2011-01-13 23:57] 第10章笔记及总结---上

1.        ret
POP IP
 retf
POP IP
POP CS
补全程序,实现从内存1000:0000处开始执行指令。
assume cs:code
stack segment
        db 16 dup (0)
stack ends
code segment
start:        mov ax,stack
        mov ss,ax
        mov sp,16
        mov ax, 1000h 
        push ax
        mov ax,   0   
        push ax
        retf
code ends
end start
注意先出栈的是IP,所以CS必须先入栈,先进后出嘛。
2.        ...
阅读全文 | 评论次数(0) | 浏览次数(394) | 所属类型(默认类型)

[2011-01-13 20:15] 第9章笔记及总结

1.可以修改IP或者同时可以修改CS和IP的指令叫做转移指令
我的疑问是短转移和近转移的范围是否与高级语言有什么关系啊,因为其范围和c++的char与int是一样的;
2.操作符offset,其实还有一个seg,表示的意义不一样,但原理是一样的;
3.对于问题9.1的nop指令我刚开始不知道,后来才知道他什么也不做,有点像c++语言的分号语句;但留有一个字节
4.jmp无条件指令,其实呢本章全部都是围绕转移的几种类型展开的,他的格式有以下几种:
Jmp short 标号;注意范围
这里要注意位移是怎么得来的;
段内近转移 jmp near ptr 标号;我把ptr给忘记了
Jm...
阅读全文 | 评论次数(0) | 浏览次数(384) | 所属类型(默认类型)

[2011-01-12 07:12] 第8章笔记及总结

1.        数据处理的长度和位置需要注意;
2.        本章其实是寻址方式的延续,很多东西之前已经学过,直接进入实验吧;
3.        关于div指令,老实说我知道原理,也看得懂,就是记不住,所以用的时候再查查吧;
4.        对于伪指令我已经掌握了,诸如dd,db等等
5.        关于dup这个指令很重要,之前在另一本汇编书上看过了。。基本没有问题
6.        实验:
这个实验看着那么复杂,我必须得下手试试;
首先开始算法分析:
根据我的智商,还是从一而终吧;
哈哈,先把年入栈,然后一个个出栈到该位置;这个总没有错吧;
空格我给忘记了,是不是什么也不做啊,先不管他,到时候我什么也不写;
不行,得休息几分钟再...
阅读全文 | 评论次数(0) | 浏览次数(375) | 所属类型(默认类型)

[2011-01-12 07:11] 第7章笔记及总结

1.        关于逻辑运算指令,书上在进行大小写转化时很有创意,这里不多的去描述,之前写了好几遍。
2.        关于ASCII码也很简单,不多说,此外我感觉还应该知道UNICODE,BCD,GB2312等编码最好,可惜的是GB2312我也没认真去研究;
3.        另外si,di我做了很多遍,两个的位置关系要注意,本章其实换成寻址方式估计还好点;呵呵;
4.        一个重要的问题就是CX循环时,其值可能会改变,所以我们可以将其入栈;这很重要;
编程,完成问题7.9中的程序。
(编程,将datasg段中每个单词的前4个字母改为大写字母。)
assume cs:codesg,ds:datasg,ss:stack...
阅读全文 | 评论次数(0) | 浏览次数(396) | 所属类型(默认类型)

[2011-01-12 07:10] 第6章笔记及总结

1.        关于程序的入口,这个书上很详细,已经全部掌握,但还是得练习一下:
ASSUME CS:code
code SEGMENT
              DW        0123h,000ah,100bh,2cd4h,5566h,7788h,6669h,1111h
              DW        0,0,0,0,0,0,0,0。。。。。。。。。
    start:
              MOV       AX,CS
              MOV       SS,AX
              MOV       SP,30h
    ...
阅读全文 | 评论次数(0) | 浏览次数(380) | 所属类型(默认类型)

[2011-01-12 07:08] 第五章笔记及总结

1.[bx]表示内存单元,他的偏移地址是:bx
例:MOV AX,[0]; 将一个内存单元的内容送入AX,长度是两个字节
MOV AL,[0]; 将一个内存单元的内容送入AL,长度是1个字节
MOV AX[BX];偏移地址在BX中,存放一个字
MOV AL,[BX];同上,存放一个字节;
总结:完整的描述一个内存单元,需要:
1)        说明内存单元地址
2)        内存单元的长度(类型)

2.(20000H)表示内存单元的内容,括号里面的数值表示物理地址
例:PUSH AX等价于:
(SP) = (SP)-2
((SS)*16+(SP)) = (AX)
另外约定IDATA表示...
阅读全文 | 评论次数(0) | 浏览次数(420) | 所属类型(默认类型)

[2011-01-12 07:01] 第四章笔记及总结

点击查看原图
第四章 第一个程序
1.一个程序从写出到执行的过程;
1)编写汇编源程序:
2)进行编译连接:编译后产生目标文件,连接后产生可执行文件 
说明:可执行文件包含:程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据)
                      相关的描述信息(程序大小,占据空间)
3)执行可执行文件中的程序;操作系统依照可执行文件的描述信息,将其机器码和数据加载进入内存,并进行相关的初始化(比如设置CS:IP指向第一条要执行的指令),然后由CPU执行程序;
2.伪指令
XXX SEGMENT
……..
XXX ENDS
定义一个段,SEG...
阅读全文 | 评论次数(0) | 浏览次数(384) | 所属类型(默认类型)

[2011-01-11 21:45] 第三章笔记及总结

第三章 寄存器(内存访问)
1.高地址放高字节,低地址放低字节;
2.[0]表示一个内存单元,0表示内存单元的偏移地址;
3.mov add sub等指令,比较简单;
4. 在DEBUG中,用 "D 0:0 lf" 查看内存,结果如下:  
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60  
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88  
下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值
mov ax,1 
...
阅读全文 | 评论次数(0) | 浏览次数(480) | 所属类型(默认类型)

[2011-01-11 19:54] 第二章笔记及总结

第二章 寄存器

1.通用寄存器中的几个寄存器AX,BX,CX,DX之所以可以分解,是因为为了和前面的CPU兼容;
2.1个字=2个字节,即16位;
3.16进制出现的原因就是为了方便程序员观看数据(这样说不是很恰当,但意思是对的)
4. 计算AX
mov ax,62627   AX=F4A3H ;注意这里是一个10进制的数据,要转换为16进制; 
mov ah,31H     AX=31A3H ;这里只是改变了ah,al还是a 
mov al,23H     AX=3123H  ;同上
add ax,ax      AX=6246H  ;
mov bx,826CH   B...
阅读全文 | 评论次数(0) | 浏览次数(324) | 所属类型(默认类型)
『 查看更多文章 』