9
转移指令的原理 可以修改IP,或同时修改CS和IP的指令统称为转移指令
·只修改IP时,称为段内转移,比如:jmp ax
·同时修改CS和IP时,称段间转移,比如:jmp 1000:0
由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移
·短转移IP的修改范围为-128~127
·近转移IP的修改范围为-32768~32767
8086CPU的转移指令分为以下几类:
·无条件转移指令(如:jmp)
·条件转移指令
·循环指令(如:loop)
·过程
·中断
9.1操作符offset
由编译器处理的符号,它的功能是取得标号的偏移地址。
比如
as...


- [sysnap] 你能告诉我怎么手动修改sp么,为什么只能在代码段开头才能指定sp,ss,而在代码段的中间不能设定 01/06 17:07
- [kevin812566059] 师兄好!我一刚准备学习这里的汇编的。请问正确的学习流程是怎么样的?具体点。谢谢! 12/27 18:11
- [slackware01] 你能告诉我怎么手动修改sp么,为什么只能在代码段开头才能指定sp,ss,而在代码段的中间不能设定 12/22 10:48
- [gwindm] 知道!但是好像是系统出了问题,一直说我没权限,让我重新登陆! 04/25 22:51
- [gwindm] 学习的时候做个笔记而已 04/25 22:50
- [gwindm] 其实检测题6.1(2)我没有完成呢! 04/25 22:49
- [gwindm] 谢谢crazyman 04/25 22:45
- [crazyman] 第一个题目的sp值不对。sp指向的是栈顶的下一个字节单元处(高地址方向)。所以,sp应该为10H。 04/24 16:19
- [younggay] 总结的不错。 04/24 11:37
- [younggay] 检测题6.2中的sp设置好像有点问题,一push数据不就覆盖掉了数据段中的数据了? 04/24 11:16
[2009-04-22 16:33] 9
阅读全文 |
评论次数(4) |
浏览次数(817) |
所属类型(默认类型)
[2009-04-22 15:36] 第八章
assume cs:codesg, ds:datasg
datasg segment
db 'BaSiC'
db 'MinIX'
datasg ends
codesg segment
start:
codesg ends
end start
SI DI bx
assume cs:codesg, ds:datasg
datasg segment
db 'welcome to masm!'
db '................'
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
...
datasg segment
db 'BaSiC'
db 'MinIX'
datasg ends
codesg segment
start:
codesg ends
end start
SI DI bx
assume cs:codesg, ds:datasg
datasg segment
db 'welcome to masm!'
db '................'
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
...
阅读全文 |
评论次数(1) |
浏览次数(620) |
所属类型(默认类型)
[2009-04-21 22:57] 第七章
and
or
assume cs:code, ds:data
data segment
db 'unIX'
db 'foRK'
data ends
code segment
start: mov al,'a'
mov bl,'b'
mov ax,4c00h
int 21h
code ends
end start
db 'unIX' 相当于 db 75H,6EH,49H,58H
‘u’‘ n’‘I’‘X’的ASCII码分别是75H,6EH,49H,58H
mov al,'a' 相当于 mov al,61H
7.5...
or
assume cs:code, ds:data
data segment
db 'unIX'
db 'foRK'
data ends
code segment
start: mov al,'a'
mov bl,'b'
mov ax,4c00h
int 21h
code ends
end start
db 'unIX' 相当于 db 75H,6EH,49H,58H
‘u’‘ n’‘I’‘X’的ASCII码分别是75H,6EH,49H,58H
mov al,'a' 相当于 mov al,61H
7.5...
阅读全文 |
评论次数(2) |
浏览次数(725) |
所属类型(默认类型)
[2009-04-21 22:40] 第六章学习笔记
dw 定义字型数据 define word
assume cs:code
code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh.0cbah,0987h
start: mov bx,0
mov ax,0
mov cx,8
s: add ax,cs:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
用start标号,是标明第一条指令在哪!
以前没有数据定义,就没有start,现在有数据了,就要知道IP偏移地址在哪了 ...
assume cs:code
code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh.0cbah,0987h
start: mov bx,0
mov ax,0
mov cx,8
s: add ax,cs:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
用start标号,是标明第一条指令在哪!
以前没有数据定义,就没有start,现在有数据了,就要知道IP偏移地址在哪了 ...
阅读全文 |
评论次数(2) |
浏览次数(795) |
所属类型(默认类型)
[2009-04-21 16:22] 第四章第五章学习笔记
p81
Debug 的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行。<--这是中断机制。
p99 实验三
我们要完整地描述一个内存单元,需要两种信息:(1)内存单元的地址;(2)内存单元的长度(类型)
p100第五章
括号“()”表示一个寄存器或一个内存单元中的内容 如:(ax)表示ax中的内容
idata表示常量 mov ax,[idata]就表示mov ax,[1] mov ax,[2] 等
inc bx 的含义是bx中的内容加1
loop指令的格式是:loop 标号,cpu执行loop指令的时候,要进行两步操作:(1)(cx)=(cx)-1;...
Debug 的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行。<--这是中断机制。
p99 实验三
我们要完整地描述一个内存单元,需要两种信息:(1)内存单元的地址;(2)内存单元的长度(类型)
p100第五章
括号“()”表示一个寄存器或一个内存单元中的内容 如:(ax)表示ax中的内容
idata表示常量 mov ax,[idata]就表示mov ax,[1] mov ax,[2] 等
inc bx 的含义是bx中的内容加1
loop指令的格式是:loop 标号,cpu执行loop指令的时候,要进行两步操作:(1)(cx)=(cx)-1;...
阅读全文 |
评论次数(1) |
浏览次数(699) |
所属类型(默认类型)
[2009-03-25 22:22]
学习记录 DS、SS、SP
----------------57~59
DS寄存器,通常用来存放要访问数据的段地址。
mov bx,1000H
mov ds,bx
mov al,[0]
mov al,[0]
mov指令已知可以完成两种传送:
1、将数据直接送入寄存器;
2、将一个寄存器中的内容送入另一个寄存器。
现在还有第三种:
3、也可以用mov指令将一个内存单元中的内容送入一个寄存器。
[...]表示一个内存单元。[...]中的0表示内存单元的偏称地址,8086CPU自动取ds中的数据为内存单元的段地址。
如上所示:要将1000H送入DS,我们进行了两步,这是因为,8086CPU不支持...
DS寄存器,通常用来存放要访问数据的段地址。
mov bx,1000H
mov ds,bx
mov al,[0]
mov al,[0]
mov指令已知可以完成两种传送:
1、将数据直接送入寄存器;
2、将一个寄存器中的内容送入另一个寄存器。
现在还有第三种:
3、也可以用mov指令将一个内存单元中的内容送入一个寄存器。
[...]表示一个内存单元。[...]中的0表示内存单元的偏称地址,8086CPU自动取ds中的数据为内存单元的段地址。
如上所示:要将1000H送入DS,我们进行了两步,这是因为,8086CPU不支持...
阅读全文 |
评论次数(4) |
浏览次数(2001) |
所属类型(默认类型)
[2008-12-19 21:21] 汇编语言第2版(完全版)学习记录
指令和数据在存储器中存放,也就是我们平时所说的内存 p12(pdf中的页码,不是书中的页码)
存储器被划分成若干个存储单元。
存储器的容量是以字节为最小单位来计算的。 p14
CPU通过“地址总路线,数据总路线,控制总路线”与内存打交道。
存储器是内存,那么,寄存器是什么呢?第二章中答:是CPU中的。
疑问:从3号单元读取数据送入寄存器AX
MOV AX,[3]
[地址总线]
CPU通过地址总线来指定存储器单元的。地址总路线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址。p16
(一台PC机上用多少的内存,跟CPU地址总线的宽度有关) ...
存储器被划分成若干个存储单元。
存储器的容量是以字节为最小单位来计算的。 p14
CPU通过“地址总路线,数据总路线,控制总路线”与内存打交道。
存储器是内存,那么,寄存器是什么呢?第二章中答:是CPU中的。
疑问:从3号单元读取数据送入寄存器AX
MOV AX,[3]
[地址总线]
CPU通过地址总线来指定存储器单元的。地址总路线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址。p16
(一台PC机上用多少的内存,跟CPU地址总线的宽度有关) ...
阅读全文 |
评论次数(0) |
浏览次数(686) |
所属类型(默认类型)
页码数(1):
1