第5章 指与指系统和汇编语言程序设计(2).ppt
-
资源ID:67241674
资源大小:249KB
全文页数:20页
- 资源格式: PPT
下载积分:16金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
第5章 指与指系统和汇编语言程序设计(2).ppt
第第5 5章章指令、指令系统和汇编语言程序设计教学机的基本指令教学机的基本指令算术逻辑运算指令算术逻辑运算指令 ADD、SUB、AND、XOR、TEST、CMP、OR、DEC、INC、SHL、SHR数据移动指令数据移动指令 MVRR、MVRD、LDRR、STRR堆栈操作指令堆栈操作指令 PUSH、POP、PSHF、POPF输入输出指令输入输出指令 IN、OUT转移指令转移指令 JMPA、JR、JRC、JRNC、JRZ、JRNZ子程序调用与返回指令子程序调用与返回指令 CALA、RETMV:MOVELD:LOADST:STORE SH:SHIFTJMP:JUMPCAL:CALLRET:RETURNJR:JUMP RELATIVER:REGISTERD:DATAA:ADDRESSF:FLAGS 指令命名规则指令命名规则单字指令单字指令分为三个主要部分分为三个主要部分:高高 8 位是位是固定长度的操作码,固定长度的操作码,最多支持最多支持 256 条指令。条指令。低低 8 位位有多种用法:给出有多种用法:给出 1 或或 2 个个寄存器寄存器的编号,的编号,或或 输入输入/输出的输出的端口地址端口地址,或或 相对转移相对转移指令的指令的 8 位的偏移量。位的偏移量。双字指令双字指令的第二个字的内容的第二个字的内容可能是:可能是:立即数立即数、直接地址直接地址、变址变址偏移量。偏移量。操操 作作 码码 目的寄存器目的寄存器源寄存器源寄存器 I/O 端端 口口 地地 址址 相对转移指令的偏移量相对转移指令的偏移量 立即数立即数 /直接地址直接地址 /变址偏移量变址偏移量 8位位 4位位 4位位 教学机的指令格式教学机的指令格式用到的寻址方式用到的寻址方式寄存器寻址寄存器寻址寄存器间接寻址寄存器间接寻址立即数寻址立即数寻址直接地址寻址直接地址寻址变址寻址变址寻址相对寻址相对寻址堆栈寻址堆栈寻址IO端口地址端口地址指令格式指令格式汇编语句汇编语句操作数操作数个数个数CZVS指令指令类型类型功能说明功能说明00000000 DR SR00000001 DR SR00000010 DR SR00000011 DR SR00000100 DR SR00000101 DR SR00000110 DR SR00000111 DRSR00001000 DR000000001001 DR000000001010 DR000000001011 DR000001000001 OFFSET01000100 OFFSET01000101 OFFSET01000110 OFFSET01000111 OFFSETADD DR,SRSUB DR,SRAND DR,SRCMP DR,SRXOR DR,SRTEST DR,SROR DR,SRMVRR DR,SRDEC DRINC DRSHL DRSHR DRJR ADRJRC ADRJRNC ADRJRZ ADRJRNZ ADR22222222111111111*A组组指指令令DRDR+SRDRDRSRDRDR and SRDRSRDRDR xor SRDR and SRDRDR or SRDRSRDRDR-1DRDR+1DR,CDR*2DR,CDR/2无条件跳转到无条件跳转到ADRC=1时跳转到时跳转到 ADRC=0时跳转到时跳转到 ADRZ=1时跳转到时跳转到 ADRZ=0时跳转到时跳转到 ADRTEC-2000 16位机基本指令系统位机基本指令系统TEC-2000 16位机基本指令系统位机基本指令系统指令格式指令格式汇编语句汇编语句操作数操作数个数个数CZVS指令指令类型类型功能说明功能说明10000000 0000000ADR(16位)位)10000001 DRSR10000010 I/O PORT10000011 DRSR10000100 0000000010000101 0000SR10000110 I/O PORT10000111 DR000010001000 DR0000DATA(16位)位)10001100 0000000010001111 00000000JMPA ADRLDRR DR,SRIN I/O PORTSTRR DR,SRPSHFPUSH SROUT I/O PORTPOP DRMVRD DR,DATAPOPFRET12120111200*B组组指指令令无条件跳到无条件跳到ADRDRSRR0I/O PORTDRSRFLAG入栈入栈SR入栈入栈I/O PORTR0DR出栈出栈DRDATAFLAG出栈出栈子程序返回子程序返回11001110 00000000 CALA ADR 1D组组调用首地址为调用首地址为ADR的子程序的子程序1、寄存器寻址的指令、寄存器寻址的指令MVRR R1,R2 指令长度是多少?执指令长度是多少?执行时间是多少?行时间是多少?2、立即数寻址指令、立即数寻址指令MVRD R1,2003H 的指令长度是多少的指令长度是多少?(该指令有几个操作数,寄存器可以用几位数表示?立即?(该指令有几个操作数,寄存器可以用几位数表示?立即数可以用几位数表示?操作码占去了几位?)数可以用几位数表示?操作码占去了几位?)3、LDRR R1,R2 指令长度是多少?执行时间是多少?指令长度是多少?执行时间是多少?4、ADD R1,2003,ADD R2,0001H ,INC R1 这三条指这三条指令格式分别是什么样?令格式分别是什么样?5、LDRA R1,2003H 和和 LDRR R1,R2 这两指令这两指令格式分别是什么样?格式分别是什么样?6、JMPA ADR和和 JR ADR有什么区别?长度是多少?有什么区别?长度是多少?思考题思考题(1)从指令的)从指令的长度长度区分区分从表从表5.1中可以看出,中可以看出,(A组)组)ADD DR,SR 1字(字(DR为目标,为目标,SR为源为源)(B组)组)JMPA ADR 2字字(无条件跳转到(无条件跳转到ADR)其具体的指令可以是:其具体的指令可以是:ADD R1,R2(R2的内容和的内容和R1的内容相加,结果存入的内容相加,结果存入R1)机器码:机器码:0000 0000 0010 001JMPA 2003H(无条件跳转到内存无条件跳转到内存2003H单元)单元)机器码:机器码:10000000 0000 0000 0100 0000 0000 0011指令的分类指令的分类从表从表5.1中可以看出,中可以看出,(A组)组)INC DR 单操作数单操作数(DR的的内容加内容加1)(B组)组)LDRR DR,SR 双操作数双操作数(DR -SR)其具体的指令可以是:其具体的指令可以是:INC R2(R2内容加内容加1,)机器码:机器码:0000 1001 0010 0000LDRR R1,R5(若(若R5的内容是的内容是100FH,则则100FH单元单元 的内容送到的内容送到R1)机器码:机器码:10000001 0001 0101(可见,并不是单操作数指令其指令长度就短(可见,并不是单操作数指令其指令长度就短)(2)从操作数的个数区分)从操作数的个数区分有寄存器寻址,寄存器间接寻址等有寄存器寻址,寄存器间接寻址等7种。种。从表从表从表从表5.15.1中可以看出,中可以看出,中可以看出,中可以看出,(A A组)组)组)组)INC DR INC DR 单操作数单操作数单操作数单操作数(DRDR的的的的内容加内容加内容加内容加1 1)(B B组)组)组)组)LDRR DRLDRR DR,SR SR 双操作数双操作数双操作数双操作数 (DR SRDR SR)(3)从使用的寻址方式分)从使用的寻址方式分从表从表5.1中可以看出,中可以看出,(A组)组)ADD DR,SR 加运算加运算(B组)组)LDRR DR,SR 读写内存读写内存 OUT I/O PORT 输出指令输出指令 (I/O PORT R0I/O PORT R0)有运算、读写内存类指令,输入输出指令,转移有运算、读写内存类指令,输入输出指令,转移有运算、读写内存类指令,输入输出指令,转移有运算、读写内存类指令,输入输出指令,转移指令,子程序调用指令,置进位标志指令等。指令,子程序调用指令,置进位标志指令等。指令,子程序调用指令,置进位标志指令等。指令,子程序调用指令,置进位标志指令等。(4)从指令的功能区分)从指令的功能区分取指取指之后之后,各组指令执行的步骤各组指令执行的步骤:A组组:1步步.寄存器寄存器之间计算和传送之间计算和传送.如如ADD DR,SRB组组:2步步.一次一次内存内存内存内存或或I/OI/O读写读写.(1)地址送)地址送 地址寄存器地址寄存器地址寄存器地址寄存器ARAR;(2)内存内存内存内存读写。如读写。如LDRR DR,SR LDRR,R2,R3C组组:3步步.间接寻址间接寻址间接寻址间接寻址P.135P.135(1)将地址值送地址寄存器)将地址值送地址寄存器ARAR(2)读内存读内存读内存读内存并送往地址寄存器并送往地址寄存器ARAR(读回的是地址)(读回的是地址)(读回的是地址)(读回的是地址)(3)读内存,读内存,读内存,读内存,并送往寄存器并送往寄存器(读回的是数据)(读回的是数据)(读回的是数据)(读回的是数据)显然这样的指令执行时间要长,显然这样的指令执行时间要长,显然这样的指令执行时间要长,显然这样的指令执行时间要长,如如LDAR R2,10DFHD组组:4步。如步。如CALA ADR(5)从指令的执行步骤分)从指令的执行步骤分单、双单、双字的字的指令格式如下指令格式如下8位位操作码操作码IR15-IR8的含义如下的含义如下指令格式及操作码指令格式及操作码单字、无操作数单字、无操作数单字、单操作数单字、单操作数单字、双操作数单字、双操作数双字、单操作数双字、单操作数双字、双操作数双字、双操作数指令格式分类指令格式分类教学计算机中的汇编程序的例子教学计算机中的汇编程序的例子例例1:设计一个程序,在屏幕上输出显示一个字符:设计一个程序,在屏幕上输出显示一个字符6。A 2000 ;从从2000H(内存(内存RAM区的起始地址)开始区的起始地址)开始2000:MVRD R0,0036 ;把字符把字符6的的ASCII码送入码送入R02002:OUT 80 ;在屏幕上输出字符在屏幕上输出字符6,80为串口地为串口地址址2003:RET ;每个用户程序都必须用每个用户程序都必须用RET指令结束指令结束2004:(按回车键即结束源程序的输入过程)(按回车键即结束源程序的输入过程)教学计算机中的汇编程序的例子教学计算机中的汇编程序的例子例例2:从键盘接受一个符号并将其显示到屏幕上。:从键盘接受一个符号并将其显示到屏幕上。AA:IN 81 SHR R0 SHR R0 JRNC AA IN 80 OUT 80 RETA 20002000:IN 812001:SHR R02002:SHR R02003:JRNC 20002004:IN 802005:OUT 80教学计算机中的汇编程序的例子教学计算机中的汇编程序的例子例例3:设计一个程序,用次数控制在终端屏幕上输出设计一个程序,用次数控制在终端屏幕上输出0到到9十个数十个数字符。字符。A 2020 MVRD R2,000A ;送入输出字符的个数;送入输出字符的个数 MVRD R0,0030 ;0字符的字符的ASCII码码 OUT 80 ;输出保存在;输出保存在R0低位字节的字符低位字节的字符 DEC R2 ;输出字符个数减;输出字符个数减1 JRZ 202E ;判全部字符输出完否;判全部字符输出完否,已完已完,则转移到程序结束处则转移到程序结束处 PUSH R0 ;未完,保存;未完,保存R0的值到堆栈中的值到堆栈中(2028)IN 81 ;查询接口状态,判字符的串行输出过程结束否;查询接口状态,判字符的串行输出过程结束否 SHR R0 ;JRNC 2028 ;未完成,则循环等待;未完成,则循环等待 POP R0 ;已完成,继续输出下一字符,从堆栈恢复;已完成,继续输出下一字符,从堆栈恢复R0 的值的值 INC R0 ;得到下一个要输出的字符;得到下一个要输出的字符 JR 2024 ;转去输出字符;转去输出字符(202E)RET教学计算机中的汇编程序的例子教学计算机中的汇编程序的例子例例4:从键盘上连续键入从键盘上连续键入0到到9之间的数字符并在屏幕上显示,非数之间的数字符并在屏幕上显示,非数字符结束程序。字符结束程序。A 2040 ;从地址;从地址2040开始输入开始输入 MVRD R2,0030 ;用于判数字符的下界值;用于判数字符的下界值 MVRD R3,0039 ;用于判数字符的上界值;用于判数字符的上界值(2044)IN 81 ;判键盘上是否按了一个键;判键盘上是否按了一个键 SHR R0 ;即串行口是否有了输入的字符;即串行口是否有了输入的字符 SHR R0 JRNC 2044 ;尚没有输入则循环测试;尚没有输入则循环测试 IN 80 ;把输入字符读到;把输入字符读到R0低位字节低位字节 MVRD R1,00FF AND R0,R1 ;将;将R0的高位字节清的高位字节清0 CMP R0,R2 ;判输入的字符;判输入的字符 字符字符0否否 JRNC 2053 ;是,则转到程序结束处;是,则转到程序结束处 CMP R3,R0 ;判输入的字符;判输入的字符 字符字符9否否 JRNC 2053 ;是,则转到程序结束处;是,则转到程序结束处 OUT 80 ;输出刚输入的数字符;输出刚输入的数字符 JMPA 2044 ;转去程序前边;转去程序前边2044处等待输入下一个字符处等待输入下一个字符(2053)RET教学计算机中的汇编程序的例子教学计算机中的汇编程序的例子例例5:设计一个有读写内存和子程序调用指令的程序,功能是读出指定内:设计一个有读写内存和子程序调用指令的程序,功能是读出指定内存中的大写字母字符,将其显示到屏幕上,转换为小写字母后再写回存中的大写字母字符,将其显示到屏幕上,转换为小写字母后再写回原存储单元。原存储单元。E 20F0 (送入将被显示的(送入将被显示的6个字符个字符AF到内存到内存20F0开始的存储区开始的存储区域中)域中)41 42 43 44 45 46A 2080 MVRD R3,0006 ;指定被读数据的个数;指定被读数据的个数 MVRD R2,20F0 ;指定被读、写数据内存区首地址;指定被读、写数据内存区首地址(2084)LDRR R0,R2 ;读内存中的一个字符到;读内存中的一个字符到R0寄存器寄存器 CALA 2100 ;调用子程序;调用子程序(入口地址为入口地址为2100),完成显示、,完成显示、;字符转换和写回内存的功能;字符转换和写回内存的功能 DEC R3 ;检查输出的字符个数;检查输出的字符个数 JRZ 208C ;完成输出则结束程序的执行过程;完成输出则结束程序的执行过程 INC R2 ;未完成,修改内存地址;未完成,修改内存地址 JR 2084 ;转移到程序的;转移到程序的2084处,循环执行规定的处理处,循环执行规定的处理 RET 子程序在下一页子程序在下一页教学计算机中的汇编程序的例子续教学计算机中的汇编程序的例子续A 2100 ;输入用到的子程序到内存;输入用到的子程序到内存2100开始的存储区开始的存储区 OUT 80 ;输出保存在;输出保存在R0寄存器中的字符寄存器中的字符 MVRD R1,0020 ;转换保存在;转换保存在R0中的大写字母为小写字母中的大写字母为小写字母 ADD R0,R1 STRR R2,R0 ;写;写R0中字符到内存,地址同中字符到内存,地址同LDRR所用的地址所用的地址(2105)IN 81 ;测试串行接口是否完成输出过程;测试串行接口是否完成输出过程 SHR R0 JRNC 2105 ;未完成输出过程则循环测试;未完成输出过程则循环测试 RET ;结束子程序执行过程,返回主程序;结束子程序执行过程,返回主程序 运行过程中,可以直接看到屏幕上显示的内容,运行过后,再用运行过程中,可以直接看到屏幕上显示的内容,运行过后,再用D 20F0命令看内存的命令看内存的20F0区域中保存的运行结果,区域中保存的运行结果,6个大写的英文字母已个大写的英文字母已经被修改为小写字母:经被修改为小写字母:0061 0062 0063 0064 0065 00661 将寄存器将寄存器R2和和R3的内容相加,结果存入的内容相加,结果存入R0。2 将寄存器将寄存器R2和和R3的内容相加,如果有进位,寄存器的内容相加,如果有进位,寄存器R0的内的内容置容置1,否则置,否则置03 若若R1的内容是负数则置的内容是负数则置R0为为-1,否则置,否则置0(提示:用(提示:用TEST)4 检测检测R3的是奇数,的是奇数,R0的内容置为的内容置为1,否则置为,否则置为0。(提示:。(提示:用移位检测用移位检测C的的方法来测量一位)方法来测量一位)5 将内存中将内存中1000H起始的起始的10个单元的内容取出加个单元的内容取出加2送入原地址。送入原地址。6 已知内存中已知内存中1000H起始的起始的10个单元中的数是个单元中的数是ASC码,将其取码,将其取出送显示。出送显示。7 将键盘录入的数存到内存将键盘录入的数存到内存1000H单元中。单元中。8 将键盘录入的将键盘录入的10个数存到内存个数存到内存1000H-1009H。汇编语言程序设计汇编语言程序设计