




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,预备知识,2,CPU、寄存器、存储器,8086/8088 CPU的结构,3,8086/8088 CPU的结构,内存,外设I/O,DB AB CB,数据总线DB 地址总线AB 控制总线CB,通用 寄存器,指针与变址寄存器,段寄存器,标志 寄存器,4,8086/8088 CPU的结构,内存,外设I/O,DB AB CB,数据总线DB 地址总线AB 控制总线CB,通用 寄存器,指针与变址寄存器,段寄存器,取指(令),译码,取数 (数据或地址),执行,标志 寄存器,5,CPU执行程序的过程,从内存取指令,执行指令,从内存取指令,执行指令,从内存取指令,执行指令,传统CPU执行指令的过程,现代CPU执行指令的过程,6,8086/8088 CPU的寄存器,8086/8088的寄存器分为4种类型: (1)通用寄存器 (2)指针和变址寄存器 (3)段寄存器 (4)标志寄存器,7,(1)通用寄存器,8,(2)指针与变址寄存器,9,(3)段寄存器,10,(4)标志寄存器,标志寄存器长度为16位,其中9个位有定义。,溢出overflow Flag,方向direction Flag,中断interrupt Flag,符号symbol,-negative, +positive,零zero,辅助进位Auxiliary Carry Flag,奇偶parity,偶even, 奇odd,进位carry,TF陷阱,单步trap,11,CF, Carry Flag, 进位标志 两数相加,最高位向前位的进位; 或两数相减最高位向前位的借位 举例:,有进位CF=1,有借位CF=1,两数相加,两数相减,2,12,AF, Auxiliary Carry Flag 辅助进位标志(半进位) 两数相加,第3位向前位的进位; 或两数相减第3位向前位的借位 举例:,0000 1001 0001 1000 0001 0001,+,0000 0000 0000 0001 1111 1111,两数相加,有辅助进位AF=1,有辅助借位AF=1,两数相减,2,13,PF, Parity Flag, 奇偶标志 算术或逻辑运算结果的低8位中含有1的位数是偶数时: PF=1;是奇数时: PF=0 举例:,1000 0101 1010 1100 1001 1101 1001 0111 1000 0101 1000 0100,AND,运算结果AL中有2个“1”,偶性,结果为: PF=1,14,ZF, Zero Flag 零标志 计算处理结果为0,则ZF为1 . 举例:,1111 1111 0000 0001 0000 0000,+,进位1,相加结果为0, ZF=1,相加结果有进位, CF=1,15,SF, Sign Flag, 符号标志 操作结果的符号位(即最高位的状态),结果为正SF=0,为负SF=1 举例:,1000 0101 1010 1100 1001 1101 1001 0111 1000 0101 1000 0100,AND,结果为负: SF=1,16,OF, Overflow Flag, 溢出标志 算术操作,结果超过目标所能容纳的范围 举例:,0111 1110 (+126) 0000 0011 (+3) 1000 0001 (-127),+,进位到符号位,值被改变,溢出,CF=1,17,IF interrupt 中断允许标志 (允许中断否) DF direction 方向标志 (存取方向) TF trap 陷阱标志,单步标志 (用于调试程序),标志位在汇编语言程序设计中非常重要,必须掌握好,18,中为英文全拼或简拼(为简化部分),单词中的大写部分为简写所取字符。,标志名 中文 标志为1时 标志为0时 OFOverflow Flag 溢出标志 ovOVerflow nvNot oVerflow DFDirection Flag 方向 dnDowN upUP IFInterrupt Flag 中断 eiEnable It diDisable It SFSign Flag 符号 ngNeGative sign plPLus sign ZFZero Flag 零 zrZeRo nzNot Zero AFAuxiliary carry Flag 辅进位 acAuxiliary Carry naNot Aux PFParity Flag 奇偶校验 peParity Even poParity Odd CFCarry Flag 进位 cyCarrY ncNot Carry,19,debug中查看状态寄存器,debug中查看状态寄存器 of(溢出) df(方向) if(中断) sf(符号) zf(零) af(辅助进位)pf(奇偶) cf(进位) 为1的时候 ov(OVerflow) dn(DowN) ei(Enable Interrupt) ng(NeGtive) zr(ZeRo) ac(Auxiliary Carry) pe(Parity Even) cy(CarrY) 为0的时候 nv(Not oVerflow) up(UP) di(DIsable interrupt) pl(PLus) nz(Not Zero) na(Not Auxiliary) po(Parity Odd) nc(Not Carry),20,3.2.1 存储器的分段结构,21,第四章 汇编语言,一、寻址方式 (8086CPU) (80X86CPU),22,通用寄存器,8086,Accumulator 累加器 Base 基址寄存器 Count 计数寄存器 Data 数据寄存器 Stack pointer 堆栈指示器 Base pointer 基址指示器 Source index 源变址器 Destination index 目的变址器,23,通用寄存器,80486,8086,Accumulator 累加器 Base 基址 Count 计数 Data 数据 Stack pointer 堆栈指示器 Base pointer 基址指示器 Source index 源变址器 Destination index 目的变址器,24,通用寄存器,80486,8086,Accumulator 累加器 Base 基址 Count 计数 Data 数据 Stack pointer 堆栈指示器 Base pointer 基址指示器 Source index 源变址器 Destination index 目的变址器,指示器和变址寄存器 访问内存必须指出要访问的内存单元地址, 这些地址值会增加指令的长度。 把地址存放在特定的寄存器中,则指令中只要给出这些寄存器的名称即可,它们是: 变址寄存器 指针寄存器 SI DI SP BP 与 DS 联用 与 SS 联用 数据段寄存器 堆栈段寄存器,数据段寻址,堆栈段寻址,25,8086是16位CPU 内部寄存器和内部数据线、外部数据线均为16位 地址线20位 ,可直接寻址 1MB。 (220=1MB) 如何使用 16 位寄存器生成 20 位地址呢? 存储器 分段,使用段寄存器CS,DS,SS,ES存储段基址 * 将 1 MB空间分为若干段,每段 64 KB(216 = 64K) * 每段的起始地址值为 1MB空间中任一个能被 16 整除的地 址值,即每段起始地址值的低 4 位恒为 0(二进制数) 。 * 物理地址由二部分组成: 段起始地址 相对段起始地址的偏移量 *段可以相互重叠。故存储器分段方案众多。,存储器分段,段基址与内存单元的距离 偏移地址,段起始地址,物理地址=段基址左移4位+偏移量,26,8086是16位CPU 内部寄存器和内部数据线、外部数据线均为16位 地址线20位 ,可直接寻址 1MB。 (220=1MB) 如何使用 16 位寄存器生成 20 位地址呢? 将 1 MB空间分为若干段,每段 64 KB(216 = 64K) 使用段寄存器CS,DS,SS,ES 存储段基址,存储器分段,27,3.2.2 实际物理地址的产生,举例:,CS=9482, IP=2350, 实际地址为: 1001 0100 1000 0010 0010 0011 0101 0000 1001 0110 1011 0111 0000,一个实际地址可以对应多个逻辑地址.,+,CS=9482,IP=2350,物理地址,28,存储器 分段,例如, 某个段寄存器内容为 C018H,即表示该段物理地址从 C018 0 H 开始,该段最后一个地址为: C 0 1 8 0 H + F F F F H = D 0 1 7 F H,64KB,29,存储器 分段,存储器分段从 8086 开始使用段寄存器,(CS)+0000,(DS)+0000,(SS)+0000,(ES)+0000,代码段 共64K 字节,附加段 共64K 字节,堆栈段 共64KB 字节,数据段 共64KB字节,重叠部分,存储器分段可以相互重叠,.,1MB,段末地址 (CS)+0ffffH,段末地址 (ES)+0ffffH,64KB,64KB,30,寻址方式 (8086指令集),1.在指令中 2.在寄存器中 3.在存储器中 4.I/O端口操作数,立即数 寄存器操作数 存储器操作数 I/O操作数,立即数寻址 寄存器寻址 存储器寻址 I/O端口寻址,第1种寻址方式:mov ax,1234,第2种寻址方式: mov bx,ax,有7种寻址方式,第3-9种,有2种寻址方式,第10,11种,立即数,4个位置,4种操作数,11种寻址方式,寻找操作数的方式叫寻址方式,寻址方式越多,CPU的功能越强大,31,每段起始地址值的低 4 位恒为 0(二进制数)。 物理地址由二部分组成: 段起始地址 相对段起始地址的偏移量 *段可以相互重叠。故存储器分段方案众多。,存储器分段,段基址与内存单元的距离 偏移地址,物理地址=段基址左移4位+偏移量,32,寻址方式(8086指令集) 操作数可能存放在4个位置: 1.在指令中 立即数 立即数寻址: mov ax,1234,mov ax,1234,mov bx,5bcfH,1,11种寻址方式的第1种,;ax1234 ah12 al34,;bx5bcf H blcf H bh5b H,立即数寻址,33,mov bx,ax,2,2.在寄存器中 寄存器操作数 寄存器寻址: mov bx,ax,11种寻址方式的第2种,mov cx,bx,;bxax,;cxbx,寄存器寻址,34,mov al,1000H,直接寻址: mov ax,1000H,3,xx,地址,内容,地址,内容,al(1000H),;al(1000H),ah(1001H),段寄存器为DS=2000H,段寄存器为DS=4000H,若操作数不在DS段,须指明 mov al,ES:1000H,直接寻址,mov al,ES:1000H,mov ax,ES:1000H,2,2,2,2,2,2,偏移地址,物理地址= DS:偏移地址= 2000H:1001H= 20000H+1001H=21001H (即DS左移4位加偏移地址),3456H,物理地址,35,mov al,1000H,直接寻址: mov ax,1000H,3,xx,地址,内容,地址,内容,al(1000H),;al(1000H),ah(1001H),段寄存器为DS,段寄存器为DS,段寄存器为DS DS: xxxx H DS: 1000 H DS: 1002 H,若操作数不在DS段,须指明 mov al,ES:1000H,直接寻址,mov al,ES:1000H,mov ax,ES:1000H,36,寄存器间接寻址:si ,di ,bx ,bp,使用的寄存器,基址寻址:bx/bp,4,mov bp ,al,bp用段寄存器SS: (除BP外,均用DS: ),mov bx ,al,段寄存器为DS,34,;bp al,即:,;DS:bx al,寄存器间接寻址,;SS:bp al,物理:10fffH,物理:21002H,37,5,变址寻址:si/di,mov di , ax,段寄存器为DS,mov ax , 7864H,mov di, 1001H,64,78,;DS:di ax,;di 1001H,;ax 7864H,物理:11001H,若先执行:,设:,若操作数不在DS段,须指明 mov al,ES:1000H,周四34节9-27至此,38,6,基址加变址寻址:bx/bp si/di,mov bp di , al,基址寄存器,mov bx si , r/sr,mov bx+si , ax,变址寄存器,bx si bx di bp si bp di,bx bp si di bp bx di si,;bp +di al,;bp +si al ; bx +si+1 ah,16位数据传送,39,7,带位移量 寄存器相对 间接寻址,8,nnnnBX/BP 例:mov 100bp,ah ;bp+100ah,BX/BP+nnnn 例:mov bx+18,cx ;bx+18cx,BX/BP+nnnn 例: mov bp+87,dl ;bp+87dl,带位移基址寻址:有效地址 = 基地址 + 位移量,带位移变址寻址:有效地址 = 变地址 + 位移量,nnnnSI/DI 例: mov 200di,bl ;di+200bl,SI/DI +nnnn 例:mov si+11,ch ;si+11ch,SI/DI+nnnn 例: mov di+26,dx ;di+26dx,9,带位移基址加变址寻址: 有效地址 = 基地址 + 变地址 + 位移量,nnBX/BPSI/DI 例: mov 100bxsi,cl ;bx+si +100 cl,BX/BP+SI/DI+nn 例:mov bx+si +100,ch;bx+si +100 cl,BX/BP+SI/DI +nn例:mov bx+si +100,ch;bx+si +100 cl,BX/BP,nnnn,SI/DI,nnnn,三种格式 功能相同,三种格式 功能相同,40,字段0,字段n,字段n-1,字段2,字段1,基址寄存器,+,(位移量),MOV AX, BX+100H,变,不变,变,不变,7,带位移基址寻址:有效地址 = 基地址 + 位移量,用于查表数据结构寻址,100H,BX,例:,反之:100H固定不变,改变BX的值进行查表,亦可,41,(位移量),数据阵列寻址,查表,单元0,单元n,单元n-1,单元2,单元1,变址寄存器,+,MOV AX, SI+100H,不变,变,变,不变,8,带位移变址寻址:有效地址 = 变地址 + 位移量,SI,100H,编程中“变”与“不变”的内容可以灵活掌握: 100H固定不变,改变SI的值进行查表,未尚不可,42,单元(0,0),单元(0,1),单元(0,n),(位移量),二维数据寻址,基址寄存器,+,MOV AX, BX+SI+100H,单元(m,n),变址寄存器,+,变,不变,变,9,带位移基址加变址寻址: 有效地址 = 基地址 + 变地址 + 位移量,BX,SI,100H,43,操作数可能存放在4个位置: 1.在指令中 立即数 立即数寻址: 第1种寻址方式 2.在寄存器中寄存器操作数 寄存器寻址: 第2种寻址方式 3.在存储器中存储器操作数 存储器寻址: 7种寻址方式(39),10,I/O端口寻址:,in al/ax,nn 例: in al , 77h ;al77h,out nn, al/ax 例: out 77h , ax ;77hax,直接I/O端口寻址(8位口) :,dx 寄存器间接I/O端口寻址(16位口),8位I/O端口地址,in al/ax ,dx 例: in al , dx ;al dx,out dx , al/ax 例: out dx , al ;dx ax,16位I/O端口地址,11,mov dx ,378H,共11种寻址方式,已学习了9种:,4.I/O端口操作数I/O操作数 I/O端口寻址:2种寻址方式(1011),还有2种:,44,I/O端口寻址,寄存器间接寻址,立即数,括号内是地址,基址R,(源)变址R,8位端口地址,16位端口地址,寻址方式 复习,偏移量,1. 立即数寻址 MOV AX, 1234H 2. 寄存器寻址 MOV AX, BX 3. 直接寻址 MOV AX, 1234H 4. 基址寻址 MOV AX, BX 5. 变址寻址 MOV AX, SI 6. 基址加变址寻址 MOV AX, BX+SI 7. 带位移基址寻址 MOV AX, BX+100H 8. 带位移变址寻址 MOV AX, SI+100H 9. 带位移基址加变址寻址 MOV AX, BX+SI+100H 10. I/O端口直接寻址(8位口) IN AL , 71H OUT 70H ,AL 11. DX 寄存器I/O端口间接寻址(16位口) IN AL,DX OUT DX,AL,基址加变址R,45,作业4:指出每条指令的寻址方式及操作结果。 1. MOV AX, 44fdH 2. MOV AX, CX 3. MOV AX, 6657H 4. MOV AX, BX 5. MOV AX, SI 6. MOV AX, BX+SI 7. M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省霸州市2025年上半年事业单位公开遴选试题含答案分析
- 2025版龙门吊拆除现场安全管理及应急预案合同
- 2025年度户外运动设施防水施工及十年质保协议
- 2025版活动赞助商权益保障合同范本下载
- 2025年度体育场馆建设人工劳务外包合同模板
- 2025年度综合商业体短期租赁合同书
- 贵州省玉屏侗族自治县2025年上半年事业单位公开遴选试题含答案分析
- 2025电机产品国际认证与出口服务合同书
- 2025年度能源行业财务风险控制合同
- 贵州省凤冈县2025年上半年公开招聘村务工作者试题含答案分析
- GB/T 3799.1-2005商用汽车发动机大修竣工出厂技术条件第1部分:汽油发动机
- 小学音乐《村晚》优质课件设计
- 东锅300MW锅炉说明书
- 咯血(课件幻灯)
- 部门会签单模板
- 2023版初中化学跨学科实践活动(化学)
- 上海市环卫作业养护预算定额经费
- 宫颈环扎术护理常规
- G12《贷款质量迁徙情况表》填报说明
- 县城市管理领域集中行使行政处罚权工作衔接规范(试行)
- 九年级初三英语七选五专练1(10篇带答案)-
评论
0/150
提交评论