汇编语言 第二章
- 格式:ppt
- 大小:697.00 KB
- 文档页数:45


第一章:1.一个存储器有若干个存储单元,一个存储单元可以存储一个B,及一个字节,及8个二进制位,及8个b(比特)2.一个cpu有N根地址线,则可以说这个cpu的地址总线的宽度为N。
这样的cpu最多可以寻找2的N次个内存单元。
3.数据总线中如8根总线一次可以传送一个字节即8b,1B,十六根则是两个字节16b,2B第二章:1. 8086cpu的寄存器都是十六位的,可以存放两个字节,AX,BX,CX,DX,这四个是通用寄存器,通常用来存放一般的数据。
2. 字等于两个字节,即字=2B3. 一个数据的二进制形式左移1位,相当于该数据乘以2;一个数据的二进制形式左移N 位,相当于该数据乘以2的N次方;同理X进制左移N位,相当于该数据乘以X的N次方4. 偏移地址为16位,所以16位地址的寻址能力为64KB,所以一个段的长度最大为64KB5. cs和ip寄存器是cpu每时每刻所要执行的指向6. jmp 段地址:偏移地址是直接跳而jmp 某一寄存器是修改其中的ip7. 用E命令向内存中写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码,用A命令以汇编指令的形式在内存中写入机器指令第三章:1. DS和[ ] , DS是段寄存器DS中储存的是段地址,而[ ] 中储存的是偏移地址Mvo 内存单元地址,寄存器也是可以的2.栈是一种具有特殊的访问方式的储存空间,他的的特殊性就在于,最后进入这个空间的数据,最先出去3.push pop ,后面跟寄存器,入栈和出栈都是以字为单位进行的4.段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在sp中,任意时刻,ss:sp指向栈顶元素,入栈时是从高地址向低地址方向进行第五章:1. [bx]同样也是表示一个内存单元,只是它的偏移地址在bx中,段地址还是在段寄存器中2. 注意() 表示括号内的内容,()中的元素可以有三种类型:寄存器,段寄存器名,内存单元的物理地址3. idata表示常量24. cpu执行loop指令的时候,要进行两步操作,第一是(cx)=(cx)-1,第二是判断cx中的值,不为零则转至标号处执行,如果为零则向下执行5. debug 中g 命令是转跳作用,一下子跳到预定的地方;p命令是把循环一次执行完6. 编程中要这样连用ds:[idata],ds:[寄存器],当然[寄存器+idata]也是可以的,同理[寄存器+si或di]也是可以的,前面那个里面两个顺序可以换,还可以这样写: idata[寄存器] [寄存器].idata,后面那个还可以这样写[寄存器][寄存器], [寄存器+idata+si或di],注意没有[寄存器+寄存器]这种类型7. 0:200~0:2ff, 00200h~002ffh的256个字节是安全的第七章:1. and or 是或,与命令2. si和di是8086cpu中和bx功能相近的寄存器,si和di不能分成两个8位的寄存器来使用第八章:1. 只有四个寄存器能在[ ] 中使用,就是bx,si,di,bp,而bx,bp不能同时出现,si,di也不能同时出现2. 只要[ ] 中使用寄存器bp,而指令中没有显性的给出段地址,段地址就默认在ss中3. 在没有寄存器存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte 例如:mov word ptr ds:[0],1 push pop 命令只进行字操作4.div 除法指令如下图所示:db 定义字节型数据dw定义字型数据dd是用来定义双字型数据的,dup是用来进行数据的重复,也就是复制,比如:db 3 dup (0,1,2) 是定义了0 1 2 0 1 2 0 1 2 九个字节5. 操作符offset在汇编语言中是汇编器处理的符号,它的功能是取得标号的偏移地址,比如:p187第九章:1. jcxz 标号如果cx=0,则转移到标号处执行,当cx不等于0,则什么也不做,它是短转移2. loop 标号cx=cx-1 如果cx不等于0 转移到标号处执行,就是s loop s循环3. ret指令用栈中的数据修改ip的内容,从而实现近转移,retf指令用栈中的数据,修改cs和ip的内容,从而实现远转移所以ret相当于:pop ipRetf相当于:pop ipPop cs5.cpu执行call指令的时候,进行两步操作,第一将当前的ip或cs和ip压入栈中;第二是转移。