33 算术运算指令-精品文档资料系列.ppt
《33 算术运算指令-精品文档资料系列.ppt》由会员分享,可在线阅读,更多相关《33 算术运算指令-精品文档资料系列.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、12. . 输入输出(输入输出(I/OI/O)指令)指令l80868086通过通过I/OI/O指令与外设交换数据;呈现给指令与外设交换数据;呈现给程序员的外设是程序员的外设是端口端口(PortPort)即)即I/OI/O地址地址l80868086用于寻址外设端口的地址线为用于寻址外设端口的地址线为1616条,条,端口最多为端口最多为2 216166553665536(64K64K)个,端口号)个,端口号为为0000H0000HFFFFHFFFFHl每个端口用于传送一个每个端口用于传送一个字节字节的外设数据的外设数据只限于用累加器只限于用累加器ALAL或或AXAX来传送信息。来传送信息。功能功能
2、: (: (累加器累加器)I/OI/O端口端口2输入输出寻址方式输入输出寻址方式l80868086的的端口有端口有64K64K个,无需分段,设计有两个,无需分段,设计有两种寻址方式种寻址方式v直接寻址直接寻址:只用于寻址只用于寻址00H00HFFHFFH前前256256个端个端口,操作数口,操作数(8(8位二进制数位二进制数) )表示端口号表示端口号v间接寻址间接寻址:可用于寻址全部:可用于寻址全部64K64K个端口,个端口,DXDX寄存器的值就是端口号寄存器的值就是端口号l对大于对大于FFHFFH的端口只能采用间接寻址方式的端口只能采用间接寻址方式3(1)输入指令输入指令IN格式格式: IN
3、 acc,PORT ;PORT端口号端口号0255H IN acc,DX ;DX表示的端口范围达表示的端口范围达64K例例:IN AL,80H ;(AL)(80H端口端口) ;从从80H号端口输入一个字节号端口输入一个字节 IN AL,DX ;(AL)(DX) ;从从16位端口地址输入一个字位端口地址输入一个字4例:输入字量1.直接寻址,字节量输入直接寻址,字节量输入 in al,21h mov ah,al in al,20h功能相同功能相同 字量数据传送字量数据传送实际上实现了连实际上实现了连续的两个端口地续的两个端口地址的字节量传送址的字节量传送2.直接寻址,字节量输入直接寻址,字节量输入
4、 in ax,20h3.间接寻址,字量输入间接寻址,字量输入 mov dx,20h in ax,dx5例:例: OUT 68H,AX ;(69H,68H)(AX) OUT DX,AL ;(DX)(AL)在使用间接寻址的在使用间接寻址的IN/OUT指令时,要事先用传送指令时,要事先用传送指令把指令把I/O端口号设置到端口号设置到DX寄存器:寄存器: MOV DX,220H IN AL,DX ;将将220H端口内容读入端口内容读入AL(2) (2) 输出指令输出指令OUTOUT格式格式:OUT port , acc OUT DX , acc63. 地址传送指令用途:用于传送操作数的地址用途:用于传
5、送操作数的地址 而不是获取存储器单元的内容而不是获取存储器单元的内容l装入有效地址指令(装入有效地址指令(Load Effective AddressLoad Effective Address)格式:格式:LEA reg,mem ; ; 将指定内存单元的偏移地址将指定内存单元的偏移地址 送到指定寄存器送到指定寄存器要求:要求: 1) 1) 源操作数源操作数必须是一个必须是一个存储器操作数存储器操作数; 2) 2) 目的操作数必须是一个目的操作数必须是一个1616位的通用寄存器。位的通用寄存器。7例:例:LEA BX,SI+10H设:(设:(SI)=1000H则执行该指令后,(则执行该指令后,
6、(BX)=1010H例:例:LEA BX,SI则执行该指令后,(则执行该指令后,(BX)=1000H例:例:LEA BX,10H则执行该指令后,(则执行该指令后,(BX)=10H8 LEA BX,BUFFER MOV BX,BUFFER注意二条指令差别:注意二条指令差别:前者表示将符号地址为前者表示将符号地址为BUFFERBUFFER的存储单元的偏的存储单元的偏移地址取到移地址取到 BXBX中中; ;后者表示将后者表示将BUFFERBUFFER存储单元中的内容取存储单元中的内容取到到 BXBX中中. .9下面两条指令等效:下面两条指令等效: LEA BX,BUFFER MOV BX, OFFS
7、ET BUFFER 其中其中OFFSET BUFFEROFFSET BUFFER表示存储器单元表示存储器单元BUFFERBUFFER的偏移地址。的偏移地址。 二者都可用于取存储器单元的偏移地址,二者都可用于取存储器单元的偏移地址,但但LEALEA指令可以取动态的地址,指令可以取动态的地址,OFFSETOFFSET只能只能取静态的地址。取静态的地址。10l装入数据段寄存器指令装入数据段寄存器指令(Load Data Segment Register)格式:格式:LDS dst,src功能:将内存中的双字数据(功能:将内存中的双字数据(4个字节)装入个字节)装入通用寄存器通用寄存器dst和和数据段
8、寄存器数据段寄存器DS。 src给出的给出的是有效地址,是有效地址,低字送到低字送到dst ,高字送到高字送到DS。例:设例:设 DS = 1000H,(11500H)= 2345H,(,(11502H)= ABCDH执行执行 LDS SI,1500H后,后,SI=?DS=?数据段数据段45H23HCDHABH11500H11501H11502H11503H解:解:SI = 2345H,DS = ABCDH11l装入附加段寄存器(装入附加段寄存器(Load Extra Segment Register)格式:格式:LES dst,src功能:将内存中的双字数据装入通用寄存器和功能:将内存中的双
9、字数据装入通用寄存器和附附加段寄存器加段寄存器。 src给出的是有效地址,给出的是有效地址,低字送到低字送到dst ,高字送到高字送到ES。12小结:数据传送指令小结:数据传送指令重点掌握:重点掌握:n 通用传送通用传送:MOV,PUSH,POP,XCHGn 目标地址传送目标地址传送: :LEA,LDS,LESn 标志传送标志传送n 输入输出输入输出: :IN,OUT名名 称称举举 例例通用数据传送指令通用数据传送指令MOVMOV AX,BXMOV DX,CX装入有效地址指令装入有效地址指令LEALEA AX,BXLEA AX,1000H交换指令交换指令XCHGXCHG CX,DXXCHG D
10、X,BX堆栈操作指令堆栈操作指令PUSH、POPPUSH CXPOP BX输入输出指令输入输出指令IN、OUTIN AL,80HOUT 68H,AX143.3 算术运算指令1.加法指令2.减法指令3.乘法指令4.除法指令15加法、减法运算操作数加法、减法运算操作数通用寄存器通用寄存器通用寄存器通用寄存器立即数立即数存储器存储器立即数立即数通用寄存器通用寄存器存储器存储器目的操作数目的操作数源操作数源操作数16(1) ADD(1) ADD:不带进位的加法指令:不带进位的加法指令 格式:ADD mem/reg,data ADD mem/reg1, reg2/mem 1.加法指令如:如: ADD A
11、X,3A5FH ;AX + 3A5FH AX ADD AL,BX ;将;将EA=BX的内存单元的的内存单元的 ;内容;内容+ALAL ADD BX,AX ;将;将EA=BX的内存单元的的内存单元的 ;内容;内容+AX 该内存单元该内存单元17 ADDADD指令对指令对6 6个状态标志均产生影响个状态标志均产生影响 例:已知例:已知(BX)=D75FH(BX)=D75FH 指令指令 ADD BX,8046H ADD BX,8046H 执行后,状态标志各是多少?执行后,状态标志各是多少?结果:结果:C=1, Z=0, P=1, A=1, O=1, S=0 源和目的操作数不能同时为存储器操作数源和目
12、的操作数不能同时为存储器操作数立即数不能作为目的操作数立即数不能作为目的操作数 D75FH = 1110 0111 0101 1111D75FH = 1110 0111 0101 1111 8046H = 1000 0000 0100 0110 8046H = 1000 0000 0100 0110 1 1 11 111 1 11 11 0110 0111 1010 0101 0110 0111 1010 010118(2) (2) ADC:带进位位的加法指令带进位位的加法指令 ADCADC指令在形式上和功能上与指令在形式上和功能上与ADDADD类似,只是相类似,只是相加时还要包括进位标志加时
13、还要包括进位标志CFCF的内容,的内容,例如:例如: ADC AL,68H ;AL(AL)+68H+(CF) ADC AX,CX ;AX(AX)+(CX)+(CF) ADC BX,DI ;BX(BX)+DI+1DI +(CF)例例1:设:设AL = 79H,BH = 0B3H,求执行指令,求执行指令ADD AL, BH后,后,AL = ?,BH = ?,各个标志位的值各个标志位的值= ? 。解解: 79H = 0111 1001 B = 121+) B3H = 1011 0011 B = -77 1 0010 1100 B = 44所以,所以,AL = 0010 1100B = 2CH,BH
14、= 0B3HSF = 0, ZF = 0, AF = 0CF = 1, OF = 0, PF = 0例例2:求两个双字数据的和。:求两个双字数据的和。数据数据1在在DX(高字高字)和和AX(低字低字)内,为内,为12345678H;数据数据2在在BX(高字高字)和和CX(低字低字)内,为内,为6789ABCDH。AX = 5 6 7 8 H+) CX = ABCD HAX = 0 2 4 5 H CF = 1解:因为解:因为8088的指令只能进行字的指令只能进行字/字节运算,所以字节运算,所以对于双字运算必须分两步进行。对于双字运算必须分两步进行。第一步,低字和低字相加:第一步,低字和低字相加
15、:ADD AX,CX第二步,高字和高字相加,同时要考虑低字之和的第二步,高字和高字相加,同时要考虑低字之和的进位:进位: ADC DX,BXDX = 1 2 3 4 HBX = 6 7 8 9 H+) CF = 1DX = 7 9 B E H CF= 0所以双字之和是所以双字之和是79BE 0245H22例例: :有两个有两个4 4字节的无符号数相加:字节的无符号数相加:2C56F8AC+309E47BE=2C56F8AC+309E47BE=?ADC指令用于多字节加法运算中 设被加数、加数分别存放在设被加数、加数分别存放在BUFFER1BUFFER1及及BUFFER2BUFFER2开始的两个存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 33 算术运算指令-精品文档资料系列 算术 运算 指令 精品 文档 资料 系列
限制150内