




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苗清影qymiao@80X86微处理器的指令系统格式:XCHGdest,src; (dest)(src)执行操作:把一个字节或一个字的源操作数与目的操作数相交换。可以实现:寄存器之间,寄存器和存储器之间注意:存储器之间不能交换,两个操作数中必须有一个在寄存器;段寄存器不能作为一个操作数;允许字或字节操作,不影响标志位。交换指令(Exchange) XCHGBL,DL XCHGAX,SI XCHGCOUNT[DI],AX XCHG[BX],[DI] XCHGDS,AX应用实例例一:BL=88H,CL=17H,AX=2500H,DX=0100H XCHGAX,DX XCHGBL,CL DX=? CL=?例二:BX=6F30H,BP=0200H,SI=0046H,SS=2FOOH, (2F246H)=4154H XCHGBX,[BP+SI] BX=? (2F246H)=?结果为:AX=0100H DX=2500H CL=88HBX=4154H (2F246H)=6F30H应用实例格式:XLATstr_table;(AL)←((BX)+(AL))
或XLAT str_table—表格符号地址(首地址),只是为了提高可读性而设置,汇编时仍用BX。
XLAT换码指令
先建立一个字节表格;表格首偏移地址存入BX;需要转换代码的序号(相对与表格首地址位移量)存入 AL;表中第一个元素的序号为0)执行XLAT指令后,表中指定序号的元素存于AL中。
(AL)为转换的代码。XLAT换码指令若把字符的扫描码转换成ASCII码;或数字0~9转换成7段数码所需要的相应代码(字形码)等就要用XLAT指令。例:内存的数据段中有一张十六进制数字的ASCII码表。
首地址为:Hex_table,欲查出表中第10个元素(‘A’)。XLAT指令实例执行指令序列:MOVBX,OFFSETHex_tableMOVAL,0AHXLATHex_table假设:(DS)=F000H,
Hex_table=0040H (AL)=0AH执行XLAT以后:(AL)=41H=(F004AH), 即“A”的ASCII码。30H31H32H...39H41H42H...46H...Hex_tableHex_table+1Hex_table+2Hex_table+0AHHex_table+0BHHex_table+0FH'F''B''A''9''1''2''0'16进制数的ASCII码表XLAT指令实例例:
BX=4040H, AL=0AH, DS=F000A, (F404AH)=20H XLAT AL=?
物理地址=?答案:
AL=20H
物理地址=F0000H+4040H+0AH=F404AHXLAT指令实例1、IN(Inputbyteorword)2、OUT(Outputbyteorword)
输入指令用于CPU从外设端口接受数据,输出指令用于CPU向外设端口发送数据。无论接受还是发送数据,必须通过累加器AX或AL,又称累加器专用传送指令。输入、输出指令不影响标志位。输入输出指令每个外设要占几个端口:数据口,状态口和控制口。输入输出指令信息交换要通过端口在IBMPC机里,可以配接许多外部设备,每个外设与CPU之间交换数据,状态信息和控制命令,每一种信息交换都要通过一个端口来进行。端口数:外部设备最多有65536个I/O端口。A0~A15译码形成。端口号:端口号(即外设端口地址)为0000H~FFFFH。PC机仅使用A0~A9译码形成I/O口地址,即1024H个口地址,端口号:0000H~03FFH,其中:A9=1,表示扩充槽上的口地址。输入输出指令长格式:端口号中前256个端口(0~FFH),可以直接写在指令中,这就是长格式。端口号代替指令中的PORT,机器指令用二字节表示,第二字节就是端口号。短格式:当端口号≥256时,只能使用短格式,必须先把端口号放到DX寄存器中。不需要用任何段寄存器来修改它的值。输入输出指令格式:INacc,port;(acc)(port)具体形式有四种:
INAL,data8;端口地址8位,输入一个字节
INAX,data8;端口地址8位,输入一个字
INAL,DX ;端口地址16位,输入一个字节
INAX,DX ;端口地址16位,输入一个字
必须通过累加器AX(字)或AL(节)输入数据。IN输入指令格式:OUTport,acc;(port)(acc)具体形式有四种:OUTdata8,AL;端口地址8位,输出一个字节OUTdata8,AX;端口地址8位,输出一个字OUTDX,AL;
端口地址16位,输出一个字节OUTDX,AX;
端口地址16位,输出一个字必须通过累加器AX(字)或AL(节)输出数据。OUT输出指令例1:实现(29H)(28H)→(DATA_WORD) INAX,28H MOVDATA_WORD,AX例2:从端口3FCH送一个字到AX寄存器
MOVDX,3FCH INAX,DX; (AL)←(3FCH),(AH)←(3FDH)
例3:实现将(AL)→(05H) OUT05H,AL;(05H)←(AL)应用举例
地址指针写入指定寄存器或寄存器对指令。
1、LEA(LoadEffectiveAddress) 2、LDS(LoadpointerusingDS) 3、LES(LoadpointerusingES)目的地址传送指令格式:LEAreg16,mem16;EA(reg16)功能:加载有效地址,用于写近地址指针。把指令中指定的存储器操作数有效地址装入指定的寄存器。例:设(BX)=0400H,(SI)=003CH LEABX,[BX+SI+0F62H]执行指令后:EA= ? (BX)=?EA=(BX)+(SI)+0F62H=0400H+003CH+0F62H=139EH(BX)=139EHLEA(LoadEffectiveAddress)(DS)=3000H;BUFFER=1000H(31000H)=0040H1.LEA指令与MOV的区别LEABX,BUFFER;(BX)=1000HMOVBX,BUFFER;(BX)=0040HLEA指令与MOV等价LEABX,BUFFER;(BX)=1000HMOVBX,OFFSETBUFFER;(BX)=1000H2.LEA指令中的目标寄存器必须是16位的通用寄存器,源操作数必须是一个存储器。应用举例格式:LDSreg16,mem32;(reg16)←(EA) (DS)←((EA)+2))功能:将指令指定32位地址指针送指令指定寄存器和DS。将指令指定mem32单元的前两个单元内容(16位偏移量)装入指定通用寄存器,把后两个单元内容(段地址)装入到DS段寄存器。LDS(LoadpointerusingDS)假设:(DS)=C000H指令: LDSSI,[0010H]执行指令后:(SI)=?(DS)=?
(SI)=0180H(DS)=2000H应用举例假设:
(DS)=0110H (0110H)=0780H (01112H)=2090H指令: LDSSI,[0010H]
(SI)=? (DS)=?
执行指令后:(SI)=0780H(DS)=2090H应用举例格式:LESreg16,mem32;(reg16)←(EA) (ES)←((EA)+2))功能:把源操作数指定的4个相继字节送指令指定的寄存器 及ES寄存器中。此指令常常指定DI寄存器。将指令指定mem32单元的前两个单元内容(16位偏移量)装入指定通用寄存器,把后两个单元内容(段地址)装入到ES段寄存器。LES(LoadpointerusingES)假设:
(DS)=B000H (BX)=080AH指令: LESDI,[BX]执行指令后:(DI)=? (ES)=?(DI)=05A2H(ES)=4000H应用举例(DS)=5000HTABLE=1000H分析下列指令执行结果:
MOVBX,TABLEMOVBX,OFFSETTABLELEABX,TABLELESBX,TABLELDSBX,TABLE应用举例(DS)=5000HTABLE=1000H指令执行结果:
MOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE;(BX)=1000HLEABX,TABLE;(BX)=1000HLESBX,TABLE;(BX)=0040H,(ES)=3000HLDSBX,TABLE;(BX)=0040H,(DS)=3000H应用举例采用了隐含寄存器(AH、Flags)操作数方式。8086有四条标志传送操作指令:1.LAHF(LoadAHintoflags)2.SAHF(StoreAHintoflags)3.PUSHF(Pushflagsontostack)4.POPF(Popflagsoffstack)
标志传送指令1.LAHF(LoadAHflags)格式:LAHF;(AH)←(PSW的低字节)功能:标志寄存器低八位(AH)LAHF指令操作图示意2.SAHF(StoreAHintoflags)
格式:SAHF;(PSW的低字节)←(AH)
功能:(AH)送标志寄存器低八位。3.PUSHF(Pushflagsontostack)
格式:PUSHF;(SP)←(SP)-2 ((SP)+1,(SP))←(PSW)
功能:标志进栈。4.POPF(Popflagsoffstack)
格式:POPF;(PSW)←((SP)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T-ZHAQ 6-2024 带逆变输出的储能电源
- 医院与医学检验技术人员2025年度劳动合同
- 二零二五年度股权质押与企业债务重组合同
- 二零二五年度集体宿舍租赁与社区治理服务合同
- 全面履行原则在2025年度房地产项目开发合同中的执行要求
- 二零二五年度汽车运输安全责任保险合作协议
- 二零二五年度文化展览聘请艺术艺人演出合同
- 2025年度高科技研发项目投资债转股协议书
- 2025年度新能源汽车产业链债权转让合同
- 二零二五年度电子元器件制造劳务派遣员工合同
- 重庆市南开名校2024-2025学年八年级下学期开学考试物理试题(含答案)
- 渗漉法胡鹏讲解
- 2025年360亿方智能航空AI白皮书-爱分析
- 【道 法】学会自我保护+课件-2024-2025学年统编版道德与法治七年级下册
- 事业编 合同范例
- 2025届高考英语读后续写提分技巧+讲义
- 买房协议书样板电子版
- 《大模型原理与技术》全套教学课件
- 2024年中铁集装箱运输有限责任公司招聘笔试参考题库附带答案详解
- 品茗安全计算软件新手入门教程1梁模板扣件式
- 预应力空心板吊装专项施工方案
评论
0/150
提交评论