Where is my way?

 

学习笔记一

(1)8个位组成一个字节(Byte或B)
(2)一个存储器有128个存储单元就可以存储128个Byte
(3)1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB
(4)总线分为:地址总线,数据总线,控制总线
(5)CPU通过地址总线来指定存储单元的
(6)一个CPU有N根地址线,则地址总线宽度为N,可以访向2^n 次方的内存单元
(7)CPU与内存或其他器件之间的数据传送是通过数据总线进行的,数据总线宽度决定传输速率
(8)程序猿通过改变寄存器实现对cpu的控制
(9)一个字由两个字节组成
(10)地址加法器采用:物理地址=段地址*16+偏移地址
1000H*16 左移一位 10000
(10)CS:段地址 IP:偏移地址 要执行的指令
(11)jmp 段地址:偏移地址 作用同时修改cs:IP的值
(12)jmp 合法寄存器可以修改IP的值
(13)DEBUG
-R 查看改变CPU寄存器的空容
-D 查看内存中的内容
-E 改写内存中的内容
-U 机器指令转成汇编指令
-T 执行一条指令
-A 以汇编指令在内存中写入一条机器指令

(14)DS:[address]段地址:[内存单元]
(15)
(16)入栈 是从高地址向低地址增长的,栈空时, sp指向最高地址的下一个单元
(17)写义重复数据 dup
db 重复次数 dup(重复的字节型数据)
dw 重复的次数 dup(重复的字型数据)
dd 重复次数 dup(重复的双字数据)
[17]可以修改IP,或同时修改cs和IP的指令统称为转移指令
短转移IP范围-128-127
近转移-32678-32687


(18)jmp short 短转移 jmp far 段间转移cs:IP jmp word 段内转移
(19)jcxz有条件转移
jcxz标号(如果cx=0,转移到标号处执行)
操作:当(cx=0 时)(ip)=(ip)+8
8位位移=标号处的地址-jcxz指令后的第一个字节的地址
8位位移的范围为-128-127用补码表示
相当于if(cx=0) jmp short 标号
(20)offset 得到偏移地址
(21)执行Call指令行,进行两步操作
1.将当前IP或CS/IP压入栈中
2.转移

相当于PUSH IP
jmp near ptr
段间转移 call far prt 标号
push cs
push IP
jmp far ptr 标号

(22)call word ptr内存单元地址
push IP
jmp word ptr 内存单元地址
(23)call dword ptr 远转移
push cs
push IP
jmp word ptr


ret
(IP)=((ss)*16+(sp))
(sp)=(sp)+2

ref
(IP)=((ss)*16+(sp))
(sp)=(sp)+2
(cs)=((ss)*16+(sp))
(sp)=(sp)+2

(20)标志位
ZF zeroflag 如果为零zf=1 否zf=0
pf bit的个数如果是偶数则为1,否为0
pf bit的个数如果是偶数则为1,否为0
sf 符号标致位 负为1 正为0
cf 进位
OF 溢出为1,否为0
adc 带进位加法 相当(ax)+(bx)+CF
sbb 带进位减法 ax-bx-CF
cmp 比较两数不保存,但会影响标志位 cmp ax,ax zf=1,pf=1 sf=0 cf=0 of=0


(21)条件转移命令
指令 含义 检测的相关标志位
je 等于则转移 zf=1
jne 不等于则转移 zf=0
jb 小于则转移 cf=1
jnb 不小于则转移 cf=0
ja 高于则转移 cf =0且zf=0
jna 不高于则转移 cf=1或zf=1

e:表示equal
ne not equal
b below
nb not below
a above
na not above

DF 控制 SI DI的增减方式
DF =1 SI DI增长
DF=0 SI DI减少
格式
movsb move sub byte +-1 循环次数由cx值确定
movesw mov sub word +-2
与rep配合使用 rep movsb repmovsw
控制 DF的指令
cld df=0
std df=1


DEBUG
Flags 1 0
OF OV NV
SF NG PL
ZF ZR NZ
PF PE PO
CF XY NC
DF DN UP


pushf
popf


中断实际是对CS:IP指令更改
当CPU收到中断信息后,优先对中断信息进行处理

posted on 2011-08-06 14:07  ManLoveGirls  阅读(122)  评论(0)    收藏  举报

导航