硬件技术幻灯片chapter2-3

上传人:F****n 文档编号:88248621 上传时间:2019-04-22 格式:PPT 页数:62 大小:263.50KB
返回 下载 相关 举报
硬件技术幻灯片chapter2-3_第1页
第1页 / 共62页
硬件技术幻灯片chapter2-3_第2页
第2页 / 共62页
硬件技术幻灯片chapter2-3_第3页
第3页 / 共62页
硬件技术幻灯片chapter2-3_第4页
第4页 / 共62页
硬件技术幻灯片chapter2-3_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《硬件技术幻灯片chapter2-3》由会员分享,可在线阅读,更多相关《硬件技术幻灯片chapter2-3(62页珍藏版)》请在金锄头文库上搜索。

1、二 数据传送指令,存 储 器,I/O 接 口,输 入 设 备,I/O 接 口,数据总线 DB,控制总线 CB,地址总线 AB,输 入 设 备,CPU,寄存器,存储器,I/O端口,数据传送是最基本、最重要的一种操作 实际程序中,使用的比例最高,change PROC LEA SI, num+2 MOV CL, num+1 MOV CH, 0 MOV AX, 0 MOV DI, 10 next: MUL DI MOV BH, 0 MOV BL, SI AND BL, 0FH ADD AX, BX INC SI LOOP next zero: MOV BX, AX RET change ENDP,汇

2、编子程例:,特点: 1. 除POPF、SAHF外,其他传送指令对标志位均无影响 2. 唯一允许以段寄存器做操作数的指令 且只有MOV、PUSH、POP这三条允许,1. 通用传送指令 MOV、PUSH、POP、XCHG、XLAT,reg/mem/segreg reg reg/segreg mem reg/mem segreg reg/mem data,可实现,1)MOV传送指令 格式 MOV dst,src 执行 ( dst ) ( src ),例 : reg/mem/segreg reg 通用寄存器/存储器/段寄存器通用寄存器 MOV AL , BL MOV BX , AL MOV DS ,

3、AX reg/segreg mem 通用寄存器/段寄存器 存储器 MOV AL , BX MOV DS , BX+SI reg/mem segreg 通用寄存器/存储器 段寄存器 MOV BX , CS MOV BX , DS reg/mem data 通用寄存器/存储器 立即数 MOV Al , 9 MOV BX , OFFSET buffer MOV value , 0 MOV WORD PTR BX , 1,MOV指令特点及注意事项: 双操作数指令 (注意双操作指令的特点) 可进行字节或字传送 不允许存储器传送到存储器 MOV BX , value MOV DI, SI MOV AX ,

4、value MOV BX ,AX MOV AL ,SI MOV DI ,AL,可对 DS、ES、SS 赋值 但不允许立即数直接传送给段寄存器 MOV DS,AX MOV ES ,BX MOV DS,1000H MOV AX ,1000H MOV DS,AX CS不能做目的操作数, 不能通过传送指令改变CS的值 MOV CS , AX,D:MASMDEBUG -A 1693:0100 MOV ES, DS Error 1693:0100 MOV AX, DS 1693:0102 MOV ES, AX 1693:0104 -,例 编程将CL寄存器的内容传送到200:100H单元中。,课外作业: 编

5、写程序段,将内存200:100H开始的一个字内容 传送到地址为800:400H开始的内存中。,MOV 200:100H , CL,2)PUSH入栈操作 格式 PUSH src 执行 ( SP) (SP)- 2 (SS:SP) (src),特点: 单操作数指令 操作数为16位,可以是reg/segreg/mem, 不可以是data reg : AX, BX, CX, DX, SI, DI, BP, BX segreg : CS, DS, ES, SS mem : 字类型,例: PUSH AX,不变 减2 变 不变,3)POP出栈操作,特点: 单操作数指令 操作数为16位,可以是reg/segre

6、g/mem, 不可以是data reg : AX, BX, CX, DX, SI, DI, BP, BX segreg : DS, ES, SS, 不允许是CS mem : 字类型,例: POP BX,不变 加2 变 变,堆栈的概念 stack,堆栈操作指令 PUSH 和 POP, 对 SS 和 SP 指向的内存单元, 以“后进先出”方式进行操作。 PUSH 入栈操作 SP减小 POP 出栈操作 SP增加 SP 指向栈顶,即堆栈的顶部, 编程员通过设置堆栈区域, 利用堆栈操作,可方便的进行数据的存放和恢复。,堆栈使用的场合 用堆栈保存恢复信息 (如上例) 子程序的调用、返回以及中断调用、返回

7、(控制转移指令中介绍) 用堆栈传送数据 (程序设计中介绍),4)XCHG交换指令(自学) 格式 XCHG oprd1,oprd2 执行 (oprd1) (oprd2),例 XCHG AX, BX 字操作 执行前(AX)= 1122H (BX)= 3344H 执行后(AX)= 3344H (BX)= 1122H 例 XCHG AH, BL 字节操作 执行前(AX)= 1122H (BX)= 3344H 执行后(AX)= 4422H (BX)= 3311H,XCHG oprd1,oprd2 注意事项: 双操作数指令 可进行字或字节操作 不允许对立即数、段寄存器做操作数 XCHG AX, 4 XCH

8、G BX, DS,2. 地址传送指令LEA、LDS、LES,LEA有效地址传送 格式 LEA reg, mem 执行 (reg) mem的EA 即 寄存器 存储器操作数的偏移地址,执行后 ( BX ) = 1000H,注意: OFFSET是汇编程序提供的一个操作符,不是CPU的指令,LEA BX, buffer,等价于 MOV BX ,OFFSET buffer,MOV AX, SEG buffer MOV DS, AX LEA BX, buffer MOV CX, 4 MOV AL, 0 exit: ADD AL, BX INC BX DEC CX ;(cx) =(cx) -1 JNZ ex

9、it ;ZF 0, 转至exit,说明: 1) 操作符SEG 的作用是取变量的段地址。 执行完前两条指令后,(DS)=buffer的段值 2) 操作符OFFSET的作用是取变量的偏移地址 执行完LEA BX, buffer, (BX)为buffer的偏移地址, 3)操作数 BX是以DS为段值,BX为偏移值的内存单元,3. 标志传送 PUSHF、POPF、 LAHF、SAHF,三. 算术运算指令,指令分类:,特点: 带符号数用补码表示 如 MOV AX, -1 等价于 MOV AX, 0FFFFh 对加、减运算,不区分无符号数、带符号数 (参见第一章例) 对乘、除运算,区分无符号数、带符号数 可

10、进行字节或字操作 影响状态标志 十进制运算方法 (不做重点,讲义中做了简单介绍) 当数据用压缩或非压缩BCD码表示时, 为使运算的结果仍为BCD码表示,需对结果进行调整。 十进制运算 = 二进制运算 + 十进制调整,BCD码( Binary Coded Decimal ) 用二进制编码表示十进制数。 常用8421 BCD码, 与十进制数码对应关系:,例 48的BCD码为 ( 0100 1000)BCD,根据在内存的存放形式,分压缩BCD码和非压缩 BCD码 1) 压缩BCD码 一字节存放2个BCD码。 如 2148 的压缩BCD码为: ( 0010 0001 0100 1000 )压缩BCD

11、在内存中占2字节 2) 非压缩 BCD码 一字节存放1个BCD码。 如 2148 的非压缩BCD码为: ( 00000010 00000001 00000100 00001000 ) 非压缩BCD 在内存中占4字节,当数据用压缩或非压缩BCD码表示时, 为使运算的结果仍为BCD码表示,需对结果进行调整。 十进制运算 = 二进制运算 + 十进制调整,例 (0000 1000 ) 压缩BCD + (0000 1001) 压缩BCD = (0001 0111 ) 压缩BCD,1. 加法运算指令,ADD、ADC为双操作数指令 INC为单操作数指令 除INC指令不影响CF外,6个状态标志均据结果设置,A

12、DC带进位加法,实现字以上运算,例1 编程完成 CFA1H + 62A0H (做过的随堂作业),MOV DX,0CFA1H ADD DX,62A0H,执行后: (DX)=3241H CF=1,OF=0,SF=0, ZF=0 (注意CF和OF的判断方法),三组指令执行后的结果均为: (AL)=0FDH, CF=0, OF=0, SF=1, ZF=0,第一章中的例题,对加、减运算,CPU计算时不区分无符号数、带符号数,例2 INC AL 执行前 (AL)= FFH,执行后: (AL)=00H CF=不变,OF=0,ZF=1,SF=0,注意是内存单元内容加1,而非地址加1,INC value 或写成

13、: INC value,若编程如下, MOV CX, 4 MOV AL, 0 exit: ADD AL, buffer INC buffer DEC CX JNZ exit,不能实现, 为什么?,. MOV CX, 4 LEA BX, buffer MOV AL, 0 exit: ADD AL, BX INC BX DEC CX JNZ exit,实现的是1A+1B+1C+1D 指令INC buffer 将buffer指向的内容加1, 而不是地址buffer加1,例5 两双字相加 0002F365H + 0005 E024 H = ?,MOV AX,0F365H ADD AX,0E024H M

14、OV BX,0002H ADC BX,0005H ,执行完、:(AX)= D389H CF=1, OF=0, SF=1, ZF=0 执行完、:(BX)= 0008H CF=0, OF=0, SF=0, ZF=0,分析: 8086/8088只能按字节或字相加。 位数在字以上的操作数,先加低位,再加高位, 加高位时加入从低位产生的进位。,2. 减法运算指令,SUB、SBB、 CMP为双操作数,DEC、NEG为单操作数 SBB为带进位减法 除DEC不影响CF标志外,6个状态标志均据结果置位 NEG求补运算,等价于用0减去操作数。 其对标志位的影响,由0减去该操作数的过程决定。,例1 编程完成 2D0

15、4H 3AB0H,执行后: (AX)=0F254H CF=1,OF=0,SF=1,ZF=0,MOV AX ,2D04H SUB AX ,3AB0H,借位,例2 value 是一个字节变量 OFFSET value = 1000H (DS)=2000H,(21000H)=00H DEC value 执行后:(21000H)=0FFH CF=不变,OF=0,ZF=0,SF=1,注意是内存单元内容减1,而非地址减1,例3 MOV AH, 80H NEG AH,执行后: (AL)=80H CF=1,OF=1,ZF=0,SF=1,例4 用指令完成两双字相减运算,MOV AX,7A70H SUB AX,A543H MOV BX,0546H SBB BX,0F001H,CMP oprd1, oprd2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号