可以修改IP,或同时修改CS和IP的指令统称为转移指令。
段内转移只修改IP,分为短转移和近转移。
转移指令可以分为:无条件转移指令,条件转移指令,循环指令,过程,中断这五类。
offset取得段偏移地址。
jmp为无条件转移指令,jmp shor只修改IP,范围为-128~127.
注意jmp在只修改IP时,使用的是相对地址,所以同一个指令在不同地址执行起来转移到的地方是不一样的。
jmp far ptr实现段间转移(远转移),同时修改CS和IP。
可以使用jmp 16位reg实现转移。
可以使用jmp word...
[2012-11-19 12:04] 第9章 转移指令的原理
阅读全文 |
评论次数(0) |
浏览次数(264) |
所属类型(默认类型)
[2012-11-16 11:26] 第8章 数据处理的两个基本问题
本章重点问题:处理的数据放在什么地方;要处理的数据有多长。
1.[bx]的基址是ds,[bp]的基址是ss。所以bx,bp不能在一起做偏移的寻址,si和di默认基址是ds,但若和bp一起使用则基址为ss。另外,si+-di不能在没有bx或bp的时候作运算。
2.指令执行前数据可以在3个地方:内存,寄存器,指令缓冲器。
3.数据位置表达方式:立即数,寄存器,段地址+偏移地址
4.五种寻址方式:直接,寄存器间接,寄存器相对,基址变址,相对基址变址。
5.指令要处理的数据长度由db,dw,dd指定,push和pop是固定对dw操作的。
6....
1.[bx]的基址是ds,[bp]的基址是ss。所以bx,bp不能在一起做偏移的寻址,si和di默认基址是ds,但若和bp一起使用则基址为ss。另外,si+-di不能在没有bx或bp的时候作运算。
2.指令执行前数据可以在3个地方:内存,寄存器,指令缓冲器。
3.数据位置表达方式:立即数,寄存器,段地址+偏移地址
4.五种寻址方式:直接,寄存器间接,寄存器相对,基址变址,相对基址变址。
5.指令要处理的数据长度由db,dw,dd指定,push和pop是固定对dw操作的。
6....
阅读全文 |
评论次数(0) |
浏览次数(249) |
所属类型(默认类型)
[2012-11-16 09:34] 第7章 更灵活的定位内存地址的方法
这章增加了一些常用的指令使用方法,但没有小结,我就自己小结一下。
1.and和or,用于位的与或,是一个很基础的逻辑操作用法,一定要灵活掌握。像(n+40H-1)&~(40H-1)和n&~(40H-1)是什么意思应该熟悉。
2.使用逻辑操作实现大小写的转换
3.[bx+idata]来指明一个内存单元,在这里,我认为这个操作既然是一条指令,那么中间就不应该有中断发生的,但bx+idata这个地址结果是要经过计算的,取地址的器件取的时候是肯定需要计算的(或者先偏移bx再偏移idata,终究是要两次),但这个过程不会被中断?我表示有点疑问。
4.数组的处理无非...
1.and和or,用于位的与或,是一个很基础的逻辑操作用法,一定要灵活掌握。像(n+40H-1)&~(40H-1)和n&~(40H-1)是什么意思应该熟悉。
2.使用逻辑操作实现大小写的转换
3.[bx+idata]来指明一个内存单元,在这里,我认为这个操作既然是一条指令,那么中间就不应该有中断发生的,但bx+idata这个地址结果是要经过计算的,取地址的器件取的时候是肯定需要计算的(或者先偏移bx再偏移idata,终究是要两次),但这个过程不会被中断?我表示有点疑问。
4.数组的处理无非...
阅读全文 |
评论次数(0) |
浏览次数(245) |
所属类型(默认类型)
[2012-11-15 11:28] 第6章 实验5 第6题 疑问
以下程序执行起来出了一个我无法解析的问题。循环执行到cx=3时,add bx,2执行后居然出现乱跳转的情况,目前还没搞清楚到底怎么一回事。
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start:
mov ax,b
mov ss,ax
mov ax,10h
...
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start:
mov ax,b
mov ss,ax
mov ax,10h
...
阅读全文 |
评论次数(1) |
浏览次数(248) |
所属类型(默认类型)
[2012-11-15 10:14] 第6章 包含多个段的程序
理解在汇编中为数据分配空间的方式:
我们可以在程序中,定义我们希望处理的数据,这些数据就会被编译、连接程序作为程序的一部分写到可执行文件中,当可执行文件中的程序被加载入内存时,这些数据同时被加载入内存。与此同时我们要处理的数据也就自然而然的获得了存储空间。
使用g命令执行运行到某个地址的功能。
在伪指令end后面加上标号表示程序入口点。这个入口点在PE文件里体现在可选头文件的标准域中的AddressOfEntryPoint字段。没学过PE文件结构的同学可以略过,但早晚你也需要学习PE文件结构的。
理解可执行程序的执行过程(不是加载过程):由其他程序将可执...
我们可以在程序中,定义我们希望处理的数据,这些数据就会被编译、连接程序作为程序的一部分写到可执行文件中,当可执行文件中的程序被加载入内存时,这些数据同时被加载入内存。与此同时我们要处理的数据也就自然而然的获得了存储空间。
使用g命令执行运行到某个地址的功能。
在伪指令end后面加上标号表示程序入口点。这个入口点在PE文件里体现在可选头文件的标准域中的AddressOfEntryPoint字段。没学过PE文件结构的同学可以略过,但早晚你也需要学习PE文件结构的。
理解可执行程序的执行过程(不是加载过程):由其他程序将可执...
阅读全文 |
评论次数(0) |
浏览次数(97) |
所属类型(默认类型)
[2012-11-15 09:49] 开始学习汇编,计划
计划两周学习完汇编的基本知识,到达看懂一般简单汇编程序的水平。
现在是第一周周四,已经学习完前六章,看来计划进度应该不会有太大的差距,但是需要巩固前面学习到的知识。就想起开个博客记录一下自己学习的心得,看到这里有不少人用王爽老师的教材,是个好地方,也欢迎大家和我的讨论。
我也是初学者,呵呵。...
现在是第一周周四,已经学习完前六章,看来计划进度应该不会有太大的差距,但是需要巩固前面学习到的知识。就想起开个博客记录一下自己学习的心得,看到这里有不少人用王爽老师的教材,是个好地方,也欢迎大家和我的讨论。
我也是初学者,呵呵。...
阅读全文 |
评论次数(1) |
浏览次数(159) |
所属类型(默认类型)
页码数(1):
1