已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
例如:计算机内部计算的数据,在转换成十进制数据后,要送到七段LED数字显示器显示。七段显示器如下它有ag七段LED组成。有共阴极和共阳极两种方式。gfedcbacomgfedcbacomabcdefg每一段需要有一个控制信号,当有电流流过时发光。假设使用共阴极方式的数码管,则com应该接低电位,ag如果为高电位,对应的段(笔画)亮。gfedcbacomD0D1D2D3D4D5D6R通常的接法如图。用一个字节的D0D6控制ag,假设com接地。则DK=1,对应的笔画亮。这样,要现实的数据与控制LED的控制信号之间就有一种对应关系数字16进制D7-D0(二进制)03F00111111B10600000110B25B01011011B34F01001111B46601100110B56D01101101B67D01111101B70700000111B87F01111111B96F01101111B这种转换利用XALT指令就比较容易实现。方法是:将控制码做成一个表格存放在内存中,表格中的控制码按09的顺序存放,表的开始地址用符号TABLE表示。在需要转换时,将要转换(显示)的十进制数送到寄存器AL中,表头地址送到BX中,则执行XLAT指令就可实现所需要的转换。假设将6转换成对应的显示控制码TABLE DB 3FH, 06H, 5BH, 4FH,66H DB 6DH, 7DH,07H,7FH,6FH MOV AL, 6 MOV BX, OFFSET TABLE;表首地址/*取table的地址到bx XLAT 实际上,要转换的数据是运算结果,将运算结果先转换成BCD数据,再将BCD数据逐位送到AL转换成显示控制码。3.1.5 地址传送指令将操作数所在存储器的地址送入目标寄存器。1. 取有效地址指令(1)指令格式: LEA dst, scrscr存储单元地址dst16位的通用寄存器(2)功能:将源操作数的有效地址EA送目的操作数所指向的寄存器。注意:对于该指令,原操作数一定是存储单元的操作数地址,目的操作数一定是16位的通用寄存器例如:假设(DS)=1000H, (SI)=3000H, (14000H)=7788H执行 LEA BX, SI+1000H ; (BX)=4000H,取地址而执行 MOV BX,SI+1000H ; (BX)=7788H,取数据前面还使用了一种取地址的方法 MOV BX, OFFSET TABLE它与取地址指令 LEA BX, TABLE效果是相同的。LEA 指令与MOV 指令的区别:LEA SI,BUFF 指令是将标号BUFF的偏移地址送入寄存器中;MOV SI,BUFF指令是将标号BUFF所指存储单元的内容送入SI。BUFF =0123454800FEFF LEA SI,BUFF;执行后:(SI)=0002HMOV SI,BUFF;执行后:(SI)=0048H2. LDS 指令(1)格式: LDS dst , src(2)功能:把源操作数src指定的连续4个存储单元中存放的32位地址指针(一个16位的段基址,一个16位的偏移量)传送到两个16位的寄存器中,其中低16位是偏移量,送dst,高二字节是段基址,送DS。例如:(DS)=3200H, (33550h)=1234H, (33552)=5678H执行 LDS SI, 1550H后 - 从32000+1550=33550H开始取4个字节(SI)= 1234H, (DS)=5678H 3. LES 指令(1)格式 LES dst , src(2)功能:与LDS指令相似,只是将段寄存器DS换成了ES。3.1.6 标志寄存器传送指令1. LAHF 指令(1)格式: LAHF(2)功能: 将标志寄存器的低8位送AH。注意:标志寄存器内容不变化。2. SAHF指令 (1)格式: SAHF (2)功能: AH内容送标志寄存器的低8位。3 PUSHF指令(1)格式: PUSHF(2)功能: 16位标志寄存器内容压入堆栈。4. POPF 指令(1) 格式: POPF(2)功能: 将当前SP所指的一个字数据送标志寄存器。对于8086 ,对于标志寄存器FLAGS高8位中的OF,DF,IF有专用的置位和复位指令,但对TF没有,要修改该位,需要将标志寄存器传送到通用数据寄存器,在通用寄存器中修改,然后再传送桂FLAGS。但又没有FLAGS与通用寄存器的传送指令,这时只好利用PUSHFPOPF指令例如:要将TF “0”PUSHFPOP AXAND AH, 11111110B ;FLAGS的D8(TF)清为0PUSH AXPOPF5. 对标志寄存器操作指令的附加说明:(1)LAHF/SAHF指令是寄存器AH与标志寄存器FLAGS的低字节之间完成的字节型数据传送。(2)PUSHF/POPF指令是标志寄存器PSW与堆栈间进行的字型数据传送。(3)指令SAHF/POPF将影响标志位。(4)8086/8088没有对单步标志位TF的直接操作指令,可以利用PUSHF指令将标志寄存器压栈,在弹出到一个通用数据寄存器,对它进行修改,然后将修改后的通用数据寄存器压栈,最后利用POPF,将修改后的值弹出送标志寄存器。(原因是TF在高8位)8086指令系统(续)算术运算指令 包括加、减、乘、除基本元算指令,十进制运算的调整指令。 可以进行带符号数的运算,也可以进行无符号数的运算。加法运算指令有按结果设置标志,不影响该标志位减法运算指令有乘法运算指令有除法运算指令有3.1.7 加法运算指令1. 不带进位加法指令(1) 格式: ADD dst, src(2) 功能: 两个数相加,结果送 dst (dst) = (dst) + (scr)(3) 说明:操作数可以是字节型,也可以是16位。源操作数可以使用立即数、寄存器操作数,或存储器操作数,目的操作数可以使用寄存器操作数或存储器操作数,不能是立即数。例如: ADD AX, 3A5FH ; ADD AX, BX+1000H; ADD BX+DI, AX; 2. 带进位加法指令(1)格式: ADDC dst, src(2)功能:除了两个操作数相加外,再加上进位信号(将进位位加到最低位)。 (dst) = (dst)+(src)+CF ;CF是进位标志。 例如:ADDC AX,BX ; (AX)(AX)+(BX)+CFADC AL, BL ;(AL)(AL)+(BL)+CFADC AX, 0100HBX ; (AX)(AX)+(0100H+BX)+CFADC指令的用途是可以进行多字长的加法运算。 例如两个32位的数进行相加,第一个数存放在存储器中以符号地址DAT1开始的存储空间,第二个数存放在DAT2开始的存储空间。计算它们的和,并存放在DAT1。D0D15D16D31dstscr+dst 9,或AF=1,则将(AL)+6。并置位AF。例如上面的结果, 低4位=1101,大于9 0101 1101+ 0000 0110 0110 0011结果变为正确的BCD码运算结果了这需要我们设计程序时判断,如果参与运算的数据是压缩的BCD码数据,则在做完加法运算后,需要使用一条DAA指令进行调整。 注意这时的加法运算,应该使用8位的加法运算 ADD AL, src目的操作数是AL。 ADD AX, src 对高8位无法进行调整。DAA 指令影响标志位,但对OF没有定义。 对CF的影响高4位大于9,或原来加法运算CF=1,则CF=1,作为向高位的进位信号。5. 非压缩BCD码加法运算调整指令 (1)格式: AAA (2)功能: 对非压缩的BCD码加法运算进行调整。 (3)对标志位的影响:只影响AF,CF 。 与DAA类似,它也是跟在以AL为目的操作数的字节性加法指令后面使用。 计算机中的数据格式,是我们在编写程序时确定的,因此,是否在加法指令后使用DAA或AAA指令,是由我们设计程序时确定的数据是BCD格式,一定需要调整,是压缩的BCD码,则用DAA调整,是非压缩的BCD码,则使用AAA调整。 加法指令,使用8位的加法运算,以AL作为目的操作数。3.1.8 减法指令1. 无借位的减法指令(1)格式: SUB dst , src(2)功能: (dst) (dst) (src)对操作数的限制同加法指令ADD, ADC。例如:SUB AX , 0200H ; 目的操作数寄存器,原操 ;作数为立即数 SUB AX, BX ;都是寄存器操作数 SUB AL, BH SUB DI+100H, BX ;相对寻址该指令影响标志位。此时的CF是借位标志位。2. 带进位位的减法指令 (1)格式: SBB dst, src (2)功能:(dst)(dst)-(src)-CF 它与减法指令SUB的区别在于还减去借位信号CF。它与带进位位的加法指令一样,用于做多字(字节)的减法。 例如 SBB AX, 2100H SUB AL, BL 等。对标志位的影响同SUB指令。3. 减一指令 (1)格式: DEC dst (2)功能: (dst) (dst)-1 例如: 如果(AX)=1234H,执行 DEC AX 后,(AX)=1233H DEC WORD PTR BP 对于堆栈区间BP指向的一个字内容-1。 WORD PTR 告诉编译程序,是字操作数。 该指令影响标志位,但不影响CF4. 求补码指令 (1) 格式: NEG dst (2)功能:执行 (dst) 0- (dst) 的操作,它实际上就是将(dst)的内容逐位取反+1。 (3)操作数可以8位,也可以是16位。 注意:补码的定义。在编写程序时,要判断待求补的数据(原码),如果是正数(或0),补码就等于原码,如果是负数,则除符号位外,逐位取反+1。 因此,将负数的符号位先取反(变为0),再使用NEG指令。 如果一个正数调用NEG指令,实际上求出的是它的机器负数。 例如 (AL)=14H, 执行 NEG AL 后 (AL) = 0 ECH -14H如果一个负数,如果不先保存符号位,使用NEG指令后,实际上变成了他的绝对值。例如: mov al, 0ech ;(al)= -14h neg al ;(al)= 14h例:内存数据段存放了200个带符号数(字节),首地址为TAB1,要求将各数取绝对值后存入以TAB2为首址的内存区。 由于200个带符号数中可能既有正数,又有负数,因此先要判断正负。如为正数,可以原封不动地传送到另一内存区;如为负数,则需先求补即可得到负数的绝对值,然后再传送。程序流程框图如下:开始取地址 SITAB1DI TAB2循环次数CX200AL SI(AL)0NEG ALDI(AL)NEXTYNCHECK修改SI,DI指向下一字节循环次数(CX)-1(CX)0结束LEA SI,TAB1;(SI)源地址指针LEA DI,TAB2 ;(DI)目标地址指针 MOV CX,200 ;(CX)循环次数CHECK: MOVAL,SI ;取一个带符号数到ALOR AL,AL ;AL内容不变,但使之影响标志JNS NEXT ;若(SF)=0,则转NEXTNEG AL ;否则求补NEXT: MOV DI,AL ;传送到目标地址INC SI ;源地址加1INC DI ;目标地址加1DEC CX ;循环次数减1JNZ CHECK ;如不等于零,则转CHECKHLT ;停止 5. 比较指令 (1)格式: CMP dst ,src (2)功能: 做 (dst)于 (src) 的比较,设置标志位。 (实际上是进行(dst) (src) 运算,但不保存结果,只是改变标志位) 该指令一般用于比较两个数的大小,依据比较结果进行程序的转移控制,是程序转到不同的分支。 教材上58页的表3-3给出了两个数比较,标志位的设置情况,或叫做标志位与两个数的大小的关系。6 . 压缩的BCD码减法调整指令 (1)格式: DAS (2)功能:对压缩的BCD减法运算结果进行调整。 (3)对标志位的影响:影响 CF,AF,PF,SF,ZF,但不影响CF。 它类似于DAA指令,用于8位的压缩BCD数据减法指令之后。7 . 非压缩的BCD减法调整指令 (1)格式: AAS (2)功能:对非压缩的BCD减法运算结果进行调整。 (3)对标志位的影响: 只影响AF, CF 注意:调整指令都跟在8位的加法、减法运算指令后面。3.1.9 乘法指令1 无符号乘法指令(1)格式: MUL src src 可以是字节数据,也可以是16位的字数据。(2)功能: 将原操作数与默认的目的操作数(AX或AL)相乘,结果保存在AX或DX,AX中。 如果src是字节操作数,则 (AX) (AL)(src)例如: MUL BL ; (AX) (AL) (BL) MUL BYTE PTR SI ;(AX) (AL) ( (SS)+(SI) ) SI所指存储单元内容 如果src是字操作数,则 (DX,AX)(AX) (src)其中,DX保存结果的高16位,AX保存结果的低16位。例如: MUL BX ;(DX,AX) (AX) (BX) MUL WORD PTR DI+100H(3) 对标志位的影响:影响CF,OF. 如果乘积的高半部分不为0,则CF=1,OF=0,否则CF-0,OF=0. 实际上始终 OF=0。2. 带符号的乘法指令(1)格式: IMUL src(2)功能:与MUL相同,仅两个数是带符号的数。(3)对标志位的影响:同MUL,运算结果只影响状态标志CF、OF。3. 非压缩BCD乘法调整指令 (1)格式: AAM (2)功能:对AX中的两个非压缩BCD码乘法的结果进行调整。 注意,两个非压缩的BCD码相乘,才能进行调整得到正确的结果8位乘法。 例如: MOV AL, 09H MOV CL, 04H MUL CL AAM ;(AX)=36H-AH=3H,AL=6H3.1.10 除法指令1. 无符号除法指令(1)格式: DIV srcsrc 可以是字节数据,也可以是16位的字数据。(2)功能: 将两个无符号数做除法运算,商和余数分别保存在指定位置。 如果src是字节操作数,则 被除数在AX, (AL) (AX)/(src)(商) (AH) 余数 例如: DIV BL ; DIV BYTE PTR SI 如果src是字操作数,则被除数在寄存器对DX,AX中,DX为高16位,AX为低16位,作 (DX,AX)/(src)运算, (AX)保存商 , (DX) 保存余数。例如: DIV BX ; DIV WORD PTR DI+100H(3) 对标志位的影响:不产生有效标志位,即CF,AF,OF,SF,ZF都是不确定的。2. 带符号除法指令(1)格式: IDIV src src 可以是字节数据,也可以是16位的字数据。(2)功能: 将两个带符号数做除法运算,商和余数分别保存在指定位置。其它与DIV指令相同。(3)当被除数位数不够时,需要进行扩展。3. 字节扩展指令(1)格式: CBW(2)功能:把AL中的带符号数扩展为16为字长(符号位扩展到AH中)。例如 (AL)= 35H, (AH=0),执行CBW指令后, (AX)=0035H (AL)=84H(-60), 则执行CWB指令后 (AX)=0FF84H(-60)。4. 字扩展指令(1)格式: CWD(2)功能:将AX中的符号位扩展到DX中。例如: (AX)=8FF3H, (DX)=0,执行CWD后 (DX)=0FFFFH,(AX)=8FF3H 8086/8088CPU执行除法时规定:除数只能是被除数的一半字长。当被除数为16位时,除数应为8为;当被除数为32位时,除数应为16为AL源操作数AHAX商余数数8位16位位被除数除数数AXAXDXDX商余数16位32位除数被除数源操作数对于无符号的数,只要将高位清0,对于带符号的数的除法,将补码扩展,必须考虑符号。用符号扩展指令可以方便的进行扩展。扩展指令主要用于在除法指令前,将被除数扩展到所需要的字长。例如 -47/5 -47=10101111B, 补码:11010001B(0D1H) MOV AL, 0D1H MOV BL,05H CWB ;带符号扩展为16位。 IDIV BL 当除数是字节数据时,被除数必须放在AX中;当除数是字数据时,被除数必须放在DX,AX中。 除法指令运算结果对状态标志无定义。 8086/8088规定IDIV指令运算结果余数的符号与被除数相同。 带符号数除法运算中,当被除数位数不够时,需要进行带符号扩展。5. 非压缩BCD码除法调整指令(1)格式: AAD(2)功能:将被除数AX的非压缩BCD码调整为二进制数,在相除。该指令应该放在除法指令前面。例如:103/6 MOV AX,0103 MOV BL,06 AAD DIV BL几点注意: 一条指令中可以包含一个或多个操作数 涉及一个操作数的指令称为单操作数指令 如位移量或立即数为16位,那么低位在前,高位在后3.1.11 输入输出指令1. 直接寻址的I/O指令直接的输入输出指令提供端口号。 如:INAL,50H;将50H端口的字节读入ALINAX,70H;分别将70H、71H ;端口的内容读入AL、AHOUT 44H,AL;将AL中的内容输出到44H端口OUT 80H,AX;将AL、AH中的内容分别输出 ;到80H、81H两端口 2. 间接的输入输出指令如:INAL,DX ;从DX所指的端口中读取INAX,DX ;从DX和DX+1所指出的两个端口 ;中读取OUT DX,AL;将AL中的字节输出到DX所指的 ;端口中OUT DX,AX;将AL中的字节输出到DX所指的 ;端口中,同时将AH中的字节输 ;出到DX+1所指的端口中输入输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某水泥厂节能降耗细则
- 2027国家烟草专卖局 中国烟草总公司机关及所属单位招聘笔试模拟试题及答案解析
- 屏山县属国有企业屏山县瑞智人力资源有限公司屏山县雅居物业管理有限公司2026年第十三批公开招聘(174人)笔试备考试题及答案解析
- 2026四川广安市岳池县林业保护和发展中心招募见习生1人笔试备考试题及答案解析
- 四川省商业投资集团有限责任公司2026年秋季校园招聘(51人)考试模拟试题及答案解析
- 2026福建泉州晋江梧林传统村落项目常态化招聘9人(第一批)考试模拟试题及答案解析
- 2026年云南省普洱市公务员人员招聘笔试参考题库与答案详解
- 汇添富基金管理股份有限公司2027届秋季校园招聘笔试模拟试题及答案解析
- 成华区医疗保障局公开招聘1名编外人员笔试备考题库及答案解析
- 2026广西南宁隆安县农业农村局公益性岗位招聘1人笔试备考试题及答案解析
- 《医疗器械经营质量管理规范》培训试题及答案
- 2026年电池PACK装配工考试试题(含答案)
- 中国海油2027届校园招聘笔试备考题库及答案解析
- 2026年林业部门招聘森林资源保护与利用专项试卷
- 2026秋新苏教版小学科学三年级上册全册教案
- 2026及未来5年中国中药香市场现状数据分析及前景预测报告
- 2026年西安铁路局人员招聘笔试备考题库及详细答案解析
- 2026年河南省巩义市高一化学上册期末考试检测卷含完整答案(全优)
- 2026年《中国慢性肾脏病临床管理指南(2026版)》
- 2026汽车玻璃行业发展现状分析及智能趋势与应用场景研究报告
- 2026光学薄膜产业现状分析及AR-VR驱动与镀膜技术创新
评论
0/150
提交评论