CPU指令及汇编练习题_第1页
CPU指令及汇编练习题_第2页
CPU指令及汇编练习题_第3页
CPU指令及汇编练习题_第4页
CPU指令及汇编练习题_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7.1汇编语言的基本概念:机器语言,高级语言,汇编语言,汇编语言源程序,汇编,汇编程序7.2汇编语言源程序的格式:分段结构(汇编语言源程序由若干段组成,每个段以SEGMENT语句开始,以ENDS语句结束。整个源程序的结尾是END语句);语句分类:指令/伪指令语句;语句的格式:[名字]助记符[操作数][;注释]LOOP1:MOVAL,DATA2[SI]DATA1DB0F8H,60H可以作为操作数的有常数、寄存器、标号、变量和表达式:01011101B,0F2H,‘ABCDEFG’;标号代表一条指令的符号地址,因此可以作为转移(无条件转移或条件转移)、过程调用CALL以及循环控制LOOP指令的操作数;变量的类型属性有DB、DW、DD。MOVAX,DATA;表达式:算术运算符(+,−,*,/、MOD、SHL、SHR):32MOD5,逻辑运算符:AND,OR,XOR和NOT,24HAND0FH;关系运算符:EQ,NE,LT,GT,LE,GE等,MOVAX,4EQ3,当关系不成立(假)时,结果为0(全0);当关系成立(真)时,结果为0FFFFH(全1);分析运算符:SEG、OFFSET、TYPE、LENGTH和SIZE,MOVAX,SEGARRAY,MOVDI,OFFSETDATA1,LENGTH运算符可得到这个变量的个数。如果未用DUP说明,则得到的结果总是1。类型BYTEWORDDWORDQWORDTBYTENEARFARType值124810-1-2SIZE=LENGTH*TYPE7.3伪指令语句1、伪指令与指令语句的区别:指令是给CPU的命令,伪指令是给汇编程序的命令;汇编以后,每条指令产生一一对应的目标代码;而伪指令则不产生与之相应的目标代码。2、数据定义伪指令(DB,DW,DD)定义一个变量的类型,给变量赋初值,或者仅仅给变量分配存储单元,而不赋予特定的值。

DATADB101,0F0H;存入65H,F0H EXPRDB2*8+7;存入17H STRDB‘Hello!';存入6个字符的ASCII码值

ABDB'AB';存入41H,42H BADW'AB';存入42H,41H BUFFERDB 10DUP(?) ZERODW 30DUP(0) MASKDB 5DUP('OK!') ARRAYDB 100DUP(3DUP(8),6)3、符号定义伪指令*(EQU)给一个符号重新命名,或定义新的类型属性等。

X1EQU0DHCOUNT=COUNT−104、段定义伪指令(SEGMENT/ENDS,ASSUME):ASSUME伪指令定义符应该放在可执行程序开始位置的前面。将某一个段寄存器设置为存放某一个逻辑段的段地址,并没有给段寄存器赋予实际的初值。5、过程定义伪指令(过程名PROC,过程名ENDP)DATASSEGMENT

DATA1DB0F8H,60H,50DATA2DW5678HDA1DB2*8+7VARDW?X1DB'AB'X2DW'AB'X3DD'AB'ARRAYDD10DUP(?)STRDB‘ATEST‘LEQUSTR-DA1DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENT

ASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处计算相关内容

MOVAL,LMOVAX,TYPEVARMOVBX,TYPEARRAYMOVCX,TYPESTRMOVDX,LENGTHARRAYMOVSI,SIZEARRAY

MOVAH,4CHINT21HCODESENDSENDSTART0F8H60H32H=5078H56H17H?41H42H42H41H42H41H00H00H?……?41H空格ASCIIT-ASCII33HDATA1DATA2?VARDA1X1X2X3ARRAY……STR10*4=40BYTE6BYTE字符4将下列词汇和说明关联起来:(1)CPU;(2)EU;(3)BIU;(4)IP;(5)SP;(6)存储器;(7)堆栈;(8)指令;(9)状态标志;(10)控制标志;(11)段寄存器;(12)物理地址;(13)汇编语言;(14)机器语言;(15)汇编程序;(16)连接程序;(17)目标码;(18)伪指令A.保存当前栈顶地址的寄存器;B.指示下一条要执行指令的地址;C.总线接口部件,实现执行部件所需要的所有总线操作;D.分析并控制指令执行的部件;E.存储程序、数据等信息的记忆装置,

PC机有RAM和ROM两种;F.以后进先出方式工作的存储器空间;G.把汇编语言程序翻译成机器语言程序的系统程序;H.惟一代表存储器空间中的每个字节单元的地址;I.能被计算机直接识别的语言;J.用指令的助记符、符号地址、标号等符号书写程序的语 言;K.把若干个模块连接起来成为可执行文件的系统程序;L.保存各逻辑段的起始地址的寄存器;M.控制操作的标志,PC机有三位:DF、IF、TF;N.记录指令操作结果的标志,

PC机有六位:OF、SF、ZF、AF、PF、CF;O.执行部件,由算术逻辑单元(ALU)和寄存器组等组成;P.由汇编程序在汇编过程中执行的指令;Q.告诉CPU要执行的操作,在程序运行时执行;R.机器语言代码。练习题5(1)CPU;(2)EU;(3)BIU;(4)IP;(5)SP;(6)存储器;(7)堆栈;(8)指令;(9)状态标志;(10)控制标志;(11)段寄存器;(12)物理地址;(13)汇编语言;(14)机器语言;(15)汇编程序;(16)连接程序;(17)目标码;(18)伪指令A.保存当前栈顶地址的寄存器;B.指示下一条要执行指令的地址;C.总线接口部件,实现执行部件所需要的所有总线操作;D.分析并控制指令执行的部件;E.存储程序、数据等信息的记忆装置,

PC机有RAM和ROM两种;F.以后进先出方式工作的存储器空间;G.把汇编语言程序翻译成机器语言程序的系统程序;H.惟一代表存储器空间中的每个字节单元的地址;I.能被计算机直接识别的语言;J.用指令的助记符、符号地址、标号等符号书写程序的语 言;K.把若干个模块连接起来成为可执行文件的系统程序;L.保存各逻辑段的起始地址的寄存器;M.控制操作的标志,PC机有三位:DF、IF、TF;N.记录指令操作结果的标志,

PC机有六位:OF、SF、ZF、AF、PF、CF;O.执行部件,由算术逻辑单元(ALU)和寄存器组等组成;P.由汇编程序在汇编过程中执行的指令;Q.告诉CPU要执行的操作,在程序运行时执行;R.机器语言代码。指令系统及汇编语言练习题1、分别指出下列指令中的源操作数和目的操作数的寻址方式1)MOVSI,2002)MOVCX,DATA[SI]3)ADDAX,[BX][DI]4)ANDAX,BX5)MOV[SI],AX6)PUSHF7)XLAT1)源:立即寻址;目:寄存器寻址。2)源:变址寻址/寄存器相对寻址;目:寄存器寻址。3)源:基址变址寻址;目:寄存器寻址。4)源:目:寄存器寻址。5)源:寄存器寻址;目:寄存器间接寻址。6)源:寄存器寻址;目:直接寻址。7)源:基址变址寻址;目的:寄存器寻址2、试述指令的区别1)MOVAX,2010H2)MOVAX,DS:[2010H]1)把2010H→AX中2)把数据段的2010H及2011H两个相邻单元地址中的一个字的内容→AX中

3、写出以下指令中内存操作数的所在地址。1)MOVAL,[BX+5]2)MOV[BP+5],AX3)INCBYTEPTR[SI+3]4)MOVDL,ES:[BX+DI]5)MOVBX,[BX+SI+2]4、判断下列指令书写是否正确。1)MOVAL,BX2)MOVAL,CL3)INC[BX]4)MOV5,AL5)MOV[BX],[SI]6)MOVBL,F5H7)MOVCS,AX8)MOVIP,[BX+1230H]9)MOVSS,DS10)MOV[DI],[BX]11)SUBARRAY[DI],[BX]12)MOVDS,1230H13)INC36H(1)(DS)*10H+(BX)+5(2)(SS)*10H+(BP)+5(3)(DS)*10H+(SI)+3(4)(ES)*10H+(BX)+(DI)(5)(DS)*10H+(BX)+(SI)+214)PUSHAL15)PUSHCS16)PUSH4567H17)POPCS18)XCHG[2530],[CX]19)XCHGIP,AX20)XCHGDS,AX21)INBL,65H22)OUTBX,AX23)OUT2345H,AX24)LEAAX,BX25)LEADS,[BP][DI]26)ADD[BX+DI],DSXXXXXXXXXXXXXXXXXXXXXXLEA指令中的目的操作数必须是一个16位通用寄存器,源操作数必须是一个存储器操作数;段寄存器不能参加、减、乘、除运算。5、设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,试问:1)执行指令PUSHAX后SP=?2)执行PUSHBX及POPAX后SP=?AX=?BX=?6、要想完成把[2000H]送[1000H]中,用指令:MOV[1000H],[2000H]是否正确?如果不正确,应用什么方法?7、假如想从100中减去AL中的内容,用SUB100,AL是否正确?如果不正确,应用什么方法?1)SP=1FFEH;2)SP=1FFEH,AX=5000H,BX=5000HMOVAX,[2000H]MOV[1000H],AX

MOVAX,[2000H]MOVBX,[1000H]MOVBX,AXNEGALADDAL,1008、用两种方法写出从88H端口读入信息的指令。再用两种方法写出从42H口输出100H的指令。9、假如AL=20H,BL=10H,当执行CMPAL,BL后,问:(1)AL,BL中内容是两个无符号数,比较结果如何?影响哪几个标志位?(2)AL、BL中内容是两个有符号数,结果又如何,影响哪几个标志位?1)MOVAL,100HOUT42H,AL2)MOVDX,0042HINAL,100HOUTDX,AL1)INAL,88H2)MOVDX,0088HINAL,DX比较指令的执行结果影响状态标志位,常常与条件转移指令结合起来使用,完成各种条件判断和相应的程序转移。例如:1)若两个被比较的内容相等,则(ZF)=1;2)当无符号数的较小数减较大数时,因不够减而产生借位,此时进位标志CF置1;3)当带符号数的较小数减较大数时,将得到负的结果,则符号标志SF置1;4)带符号数相减如果结果溢出,则OF置1。1)AL>BL,CF=0,ZF=02)AL>BL,SF=0,OF=010、读下面程序段,请问:在什么情况下,本段程序的执行结果是AH=0?BEGIN:INAL,5FHTESTAL,80HJZBRCH1MOVAH,0JMPSTOPBRCH1:MOVAH,0FFHSTOP:HLTAL中的最高位为1时AH=0。

(2)测试指令TEST(TESTornon-destructivelogicalAND)TESTdst,src;(dst)∧(src)TEST指令的操作实质上与AND指令相同,即把目的操作数和源操作数进行逻辑“与”运算。二者的区别在于TEST指令不把逻辑运算的结果送回目的操作数,只将结果反映在状态标志位上。例如,“与”的结果最高位是“0”还是“1”,结果是否为全“0”,结果中“1”的个数是奇数还是偶数等,分别由SF、ZF和PF状态标志位体现。和AND指令一样,TEST指令总是将CF和OF清零,但使AF的值不确定。例如:TESTTESTBH,7SI,BP;寄存器''与''立即数(结果不回送,下同);寄存器''与''寄存器TEST[SI],CH;存储器''与''寄存器TEST[BX][DI],BYTEPTR6AH;存储器''与''立即数2.48086/8088指令系统TEST指令常常用于位测试,它与条件转移指令一起,共同完成对特定位状态的判断,并实现相应的程序转移。这样的作用与比较指令CMP有些类似,不过TEST指令只比较某一个指定的位,而CMP指令比较整个操作数(字节或字)。例如以下几条指令判断一个端口地址为PORT的外设端口输入的数据,若输入数据的第1、3、5位中的任一位不等于零,则转移到NEXT。INAL,PORTTESTAL,00101010BJNZNEXT;从端口PORT输入数据;测试第1、3、5位;任一位不为0,则转移NEXT:…

2.48086/8088指令系统11、读程序,假设20H端口内容是06H,30H端口内容是05HSTART:INAL,20HMOVBL,ALINAL,30HMOVCL,ALMOVAX,0ADLOP:ADDAL,BLADCAH,0DECCLJNZADLOPHLT请问:(1)本程序实现什么功能?(2)结果在哪里?完成06H*05H,结果在AX中,AX=001EH。12、请编一段程序完成AX*10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论