51汇编程序练习题1.
- 格式:doc
- 大小:30.00 KB
- 文档页数:6
汇编语言试题(1)一、选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
每题2分,共36分)1.执行指令 MOV AL,[BP] 时,所读取的数据应在 ( )A. 代码段中B.数据段中C. 堆栈段中D. 附加数据段中2.执行如下程序:MOV AX,0MOV BX,1MOV CX,100A:ADD AX,BXINC BXLOOP A执行后BX中的内容为 ( )。
A.99B. 100C. 101D.1023. .将AX中有符号数除以4的正确指令序列是( )。
A. SHR AX,1B. SAR AX,1C.IDIV 4D.DIV 4SHR AX,1 SAR AX,14.使8086/88的标志寄存器F中的中断标志IF置为关中断的命令是 ( )A. CLIB. STDC. STID. CLD5.无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是()A.ADD BH,01H B.OR BH,01H C.XOR BH,01H D.TEST BH,01H6. 数据段定义如下:Data segmentsV1 DB 4 DUP(2),1COUNT EQU 10V2 DD COUNT DUP(?)Data ends则该数据段在内存中所占的存储字节数目是()A. 9 B. 45 C. 46 D. 107.在下列程序执行后,AL寄存器的值为 ( )。
A1 DB 5 DUP(2 DUP(2,0,1),3)MOV AL,A1+6A. 2;B. 3;C. 0;D. 18.对于下列程序段:AGAIN:MOV AL,[SI]MOV ES:[DI],ALINC SIINC DILOOP AGAIN也可用()指令完成同样的功能。
A. REP MOVSBB. REP LODSBC. REP STOSBD. REPE SCASB9.若汇编语言源程序中段的定位类型设定为PARA,则该程序目标代码在内存中的段起始地址应满足什么条件?( )A. 可以从任意地址开始B. 必须是偶地址C. 必须能被16整除D. 必须能被256整除10.指令 MOV BYTE PTR 〔 BX+SI 〕, 0 中目的操作数的寻址方式是 ( ) 。
汇编程序复习题(1)1.CPU要访问的某⼀存储单元的实际地址称()A.段地址B.偏移地址C.物理地址D.逻辑地址2.某存储单元的物理地址是12345H,可以作为它的段地址有()A.2345H B.12345HC.12340H D.1234H3.执⾏后使BX=0的同时也使CF=0,OF=0的指令是()A.XOR BX,BX B.OR BX,BXC.AND BX,BX D.CMP BX,BX4.循环控制指令LoopNZ/LoopNE控制循环继续执⾏的条件是()A.CX≠0且ZF=1B.CX≠0且ZF=0C.CX≠0或ZF=1D.CX≠0或ZF=05.在执⾏DAA指令,当⾼四位BCD码校正时产⽣进位,如要把此进位值送⼊AH 中,对这进位值的操作应是()A.DAA校正指令的功能已⾃动加在AH中B.进位值在AF中,校正后根据AF内容再加在AH中C.进位值在CF中,校正后根据CF内容再加在AH中D.进位值在AL最⾼位上,校正后根据AL最⾼位内容再加在AH中6.AND,OR,XOR,NOT为四条逻辑运算指令,下⾯的解释正确的是()A.指令XOR AX,AX执⾏后,AX内容不变,但设置了标志位B.指令OR DX,1000H执⾏后,将DX最⾼位置1,其余各位置0C.指令AND AX,OFH执⾏后,分离出AL低四位D.NOT AX,执⾏后,将AX清07.在执⾏下列指令时,需要使⽤段寄存器DS的指令是()A.STOSW B.ADD AL,CLC.NEG BX D.INC DA[BX]8.⽆论BH中原有的数是奇数或偶数,若要使BH中的数⼀定为奇数,应执⾏的指令是()A.ADD BH,01H B.OR BH,01HC.XOR BH,01H D.TEST BH,01H9.完成对CL寄存器的内容乘以4的正确操作是()A.ROL CL,1 B.MUL 4ROL CL,1C.SHL CL,1 D.MOV CL,2SHL CL,1 SHL CL,CL10.下⾯各传送指令中,正确的是()A.MOV [DI],[SI]B.MOV[DX+DI],ALC.MOV WORD PTR [BX],0100H D.MOV AL,BX11.汇编语⾔语句格式中对名字项的规定如下,请找出其中错误的说法(D )A.名字的第⼀个字符可以是⼤写英⽂字母及⼩写英⽂字母B.名字的第⼀个字符可以是字母、数字及、@、_C.名字的有效长度≤31个字符D.在名字中不允许出现$12.要实现使BETA的值为56,应采⽤语句为(C )A.BETA DB 56B.BETA DB 56HC.BETA EQU 56D.BETA EQU 56H13.REPZ CMPSW指令,重复执⾏的终⽌条件是(C )A.CX=0或ZF=0B.CX=0且ZF=0C.CX=0或ZF=1D.CX=0且ZF=114.下⾯程序段执⾏后,AL中的内容是()MOV AX,8833HADD AL,AHDAAA.21B.21HC.0C1H D.0DDH15.⽐较两个带符号的数A、B,当A=B时程序转移,测试的条件为(A)A.ZF=1B.ZF=0C.SF=1D.SF=0---------CMP A,BA=BZF=1---------16.检查⼆个⽆符号数的关系,若要实现AL≥BL时分⽀去LOP1处,那么在“CMP AL,BL”指令后应跟的分⽀指令是(B)A.JNC LOP1B.JA LOP1C.JC LOP1D.JGE LOP117.在下列串操作指令中,同时使⽤源串和⽬的串地址指针的指令是(D)A.STOSW B.LODSWC.SCASW D.CMPSW18.设AL=0AH,下列指令执⾏后能使AL=05H的是(C)A.NOT AL B.AND AL,0FHC.XOR AL,0FH D.OR AL,0FHOF 00001111+AL 00001010=05H19.DA1 DW‘AB’,‘CD’,‘EF’,‘GH’()┇MOV AX,DA1+3指令执⾏后AX中的内容是A.‘EF’B.‘CD’C.‘BC’D.‘FC’20.使⽤DOS系统功能调⽤时,使⽤的软中断指令是()A.INT 21 B.INT 10HC.INT 16H D.INT 21H21.当执⾏ADD AX,BX指令后,若AX的内容为4E52H时,设置的奇偶标志位PF=0,下⾯的叙述正确的是( )A.表⽰结果中含1的个数是奇数B.表⽰结果中含1的个数是偶数C.表⽰该数是奇数D.表⽰结果中低8位中含1的个数是奇数22.设物理地址(21000H)=20H,(21001H)=30H,(21002H)=40H。
汇编51单片机考试常见试题一、填空题1.单片机是把中央处理器、存储器、定时器/计数器以及I/O接口电路等主要计算机部件集成在一块集成电路芯片上的微型计算机。
2.除了单片机这一名称之外,单片机还可称为微控制器、嵌入式控制器。
3.计算机的系统总线有地址总线、控制总线和数据总线。
4.80C51单片机基本型内部RAM有 128 个字节单元,这些单元可以分为三个用途不同的区域,一是工作寄存器区、二是位寻址区、三是数据缓冲区。
5.8051单片机有2 个16位定时/计数器。
6.单片机存储器的主要功能是存储程序和数据。
80C51含4 KB掩膜ROM。
7.80C51在物理上有4个独立的存储器空间。
8.通常、单片机上电复位时PC= 0000H,SP=07H;而工作寄存器则缺省采用第00 组,这组寄存器的地址范围是从00H~ 07H。
9.8051的堆栈是向地址的高端生成的。
入栈时SP先加1,再压入数据。
10.使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。
11.MCS-51特殊功能寄存器只能采用直接寻址方式。
12.汇编语言中可以使用伪指令,它们不是真正的指令,只是用来对汇编过程进行某种控制。
13.半导体存储器的最重要的两个指标是存储容量和存储速度。
14.当PSW4=1,PSW3=0时,工作寄存器Rn,工作在第2组。
15.在8051单片机中,由 2 个振荡(晶振)周期组成1个状态(时钟)周期,由 6个状态周期组成1个机器周期。
16.假定累加器A的内容30H,执行指令:1000H:MOVC A,@A+PC后,把程序存储器1031H单元的内容送累加器A中。
17.MCS-51单片机访问外部存储器时,利用ALE信号锁存来自P0口的低8位地址信号。
18.内部RAM中,位地址为30H的位,该位所在字节的字节地址为26H。
19.若A中的内容为63H,那么,P标志位的值为0。
20.在基址加变址寻址方式中,以累加器A作变址寄存器,以DPTR或PC作基址寄存器。
单片机汇编程序设计练习一、存储器之间的数据传送1、编程实现将单片机内部 RAM60H 开始的连续 32个单元置为 FFH 。
MOV R0,#60HMOV R7,#32MOV R1,#0FFHMOV A,R1LOOP: MOV @R0,AINC R 0DJNZ R7,LOOPSJMP $END2、编程实现将内部 RAM30H 开始的连续 16个数传送到内部 RAM50H 开始的连续单元中。
MOV R0,#30HMOV R1,#50HMOV R7,#16LOOP: MOV A,@R0MOV @R1,AINC R 0INC R 1DJNZ R7,LOOPSJMP $END3、编程实现将单片机外部 RAM2000H 为首地址的数据块传送到单片机内部RAM30H 开始的单元中,数据块的长度为 32个字节。
4、编程实现将单片机内部 RAM30H 为首地址的数据块传送到外部RAM2000H 开始的单元中,数据块的长度存放于内部 RAM 的 20H 单元。
5、编程实现将单片机外部 RAM2000H 为首地址的数据块传送到单片机内部RAM30H 开始的单元中,直到数据内容为 0DH 时停止传送。
6、编程实现将 ROM1000H 地址的内容传送到内部 RAM 的 25H 单元。
7、编程实现将 ROM2000H 开始的连续 10个地址的内容传送到内部 RAM 的25H 开始的单元。
8、编程实现将 ROM1000H 开始的连续 100个地址的内容传送到外部RAM2000H 开始的连续单元中。
二、查表程序设计1、编写查表程序, 要查表的数据存放在 R7中, 其范围为 0~9。
编程查其平方值, 并存放于 40H 。
2、编写查表程序, 要查表的数据存放在 R7中, 其范围为 0~9。
编程查其立方值, 并存放于 R6。
3、单片机外部 ROM TAB1地址开始存放一组 ASCII 码表,试用查表方法,将R2的内容 (范围为 0~F 转换为与其对应的 ASCII 码,并从 P1口输出。
一、填空题1.单片机是把中央处理器、存储器、定时器/计数器以及I/O 接口电路等主要计算机部件集成在一块集成电路芯片上的微型计算机。
2.除了单片机这一名称之外,单片机还可称为微控制器、嵌入式控制器。
3.计算机的系统总线有地址总线、控制总线和数据总线。
4. 80C51 单片机基本型内部 RAM 有 128 个字节单元,这些单元可以分为三个用途不同的区域,一是工作寄存器区、二是位寻址区、三是数据缓冲区。
5. 8051 单片机有2 个 16 位定时/计数器。
6.单片机存储器的主要功能是存储程序和数据。
80C51 含4 KB 掩膜 ROM。
7. 80C51 在物理上有4 个独立的存储器空间。
8.通常、单片机上电复位时 PC= 0000H, SP= 07H;而工作寄存器则缺省采用第00 组,这组寄存器的地址范围是从00H~ 07H。
9. 8051 的堆栈是向地址的高端生成的。
入栈时 SP 先加 1 ,再压入数据。
10.使用 8031 芯片时,需将/EA 引脚接低电平,因为其片内无程序存储器。
11. MCS-51 特殊功能寄存器只能采用直接寻址方式。
12.汇编语言中可以使用伪指令,它们不是真正的指令,只是用来对汇编过程进行某种控制。
13.半导体存储器的最重要的两个指标是存储容量和存储速度。
14.当 PSW4=1,PSW3=0 时,工作寄存器 Rn,工作在第2 组。
15.在 8051 单片机中,由 2 个振荡(晶振)周期组成 1 个状态(时钟)周期,由6 个状态周期组成 1 个机器周期。
16.假定累加器 A 的内容 30H,执行指令: 1000H: MOVC A, @A+PC 后,把程序存储器1031H 单元的内容送累加器 A 中。
17. MCS-51 单片机访问外部存储器时,利用ALE 信号锁存来自 P0 口的低 8 位地址信号。
18.内部 RAM 中,位地址为 30H 的位,该位所在字节的字节地址为26H。
《汇编语言程序设计》练习测试题库一 .选择题(只有一个正确答案,填在题干前的括号里)1.一台完整的计算机系统包括_________。
A.硬件系统和软件系统B.系统硬件和系统软件C.控制器、运算器、存储器、输入设备和输出设备D.操作系统、机器语言、汇编语言、高级语言2.汇编程序属于_________。
A.硬件系统 B.软件系统 C.系统软件 D.用户软件3.简单的汇编语言程序可以通过_________来建立A.连接程序 B.调试程序 C.汇编程序 D.编辑程序4.8086/8088微处理器包含有两个独立的部件_________和_________。
A.R和ALU B.CS和IP C.BIU和EU D.CPU和I/0设备5 .进行汇编语言编程时,设计者应该考虑一些基本的要求,下列叙述不正确的是____。
A.程序应该结构化B.程序应该执行速度快C.程序应该占用空间大D.程序应该简明、易读、易懂6 .一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是____。
A.12C5BHB.12B6BHC.12C59HD.12BFEH7 .字符串HOLLO的ASCII代码表示为____.A.484F4C4C4FHB.484F4D4D4FHC.494F4C4C4FHD.494F4D4D4FH8.如果内存中某一单元的物理地址是20B4CH,那么它的逻辑地址是_________:212CH。
A. IEA2H B. IEB2H C. IFA2H D. IFB2H9,现有段地址和偏移地址为1025H:0F2AH,那么它所对应存储单元中的物理地址是_________。
A. 1107AH B. 01F4FH C. 11F4FH D. 1117AH10.一个有16个字的数据区,它的起始地址是1000H:117AH,请指出这个数据区最末一个字单元的物理地址是_________。
汇编语言程序设计模拟试题及参考答案1一、单项选择题(从四个备选答案中选出一个正确的答案填在题干的括号内)(20分)1. 指令MOV AL,[SI]的源操作数的寻址方式为()。
A. 变址寻址B. 寄存器间接寻址C. 基址寻址D.基址变址寻址2.确定下列哪些数据在汇编语言中是非法的()。
A. 19AHB. 13 AND 65HC. 25DD. AX+33.已知AL,BL中各存放一个无符号数,计算AL/BL的商,用下述程序段()。
A. DIV BLB. IDIV BLC. XOR AH,AHD. CBWDIV BL IDIV BL4. 已知AL=67H,BL=34H,则指令ADD AL,BL执行后,OF和CF的值分别为()。
A. 0,0B. 0,1C. 1,0D. 1,15. 已知SP=100H, 指令CALL AX执行后,SP的内容为()A. 100HB. 102HC. 00FEHD. 98H6. 下述程序段执行后,寄存器AH和AL的内容分别为()MOV AX,1000HMOV CL,08HDIV CLA. 不确定B. 00,125HC. 00,200HD. 00H,00H7. JMP SI 的目标地址偏移量为()。
A. IP+[SI]B. IP+SI的内容C. SI的内容D. SI所指向的内存字单元的内容8. 下述对近类型的子程序PN的调用中,哪一个不能够正确地调用该子程序()。
A. CALL PNB. LEA AX,PNCALL AXC. MOV AX,PND. MOV AX,OFFSET PNCALL AX CALL AX9. 初始化8259A时,ICW2的值为15H,当IR2端有中断请求时,8259A送出的中断方式码是( )。
A. 17HB. 12HC. 13HD. 10H10. 在两个8259A级联的中断系统中,从8259A连接在主8259A的IR3上,主8259A和从8259A 的ICW3应设置为()A. 03H,08HB. 08H,03HC. 04H,03HD. 08H,08H二、判断题(判断每题正误,对的在题后的括号内打“√”;错的在题后的括号内打“×”)。
《汇编语言程序设计》考试练习题及答案一、单选题1. 计算机中存取信息或数据的最小单位为()A 、位B 、字节C 、字D 、双字答案:B2. 调用子程序的指令为()A 、CALLB 、RETC 、HLTD 、NOP答案:A3. DOS功能调用是通过()指令去调用DOS系统提供的软件中断处理程序A 、INT 21HB 、INT 23HC 、INT 12HD 、INT 11H答案:A4. 满足()时,CPU允许中断A 、IF=0B 、IF=1C 、DF=0D 、DF=1答案:B5. 完成对CL寄存器的内容乘以4的正确操作是()。
A 、ROL CL,1 ROL CL, 1B 、MUL 4C 、SHL CL, 1 SHL CL, 1D 、MOV CL , 2 SHL CL, CL答案:C6. 下面寄存器中可以分为两个独立8位寄存器的是()A 、AXB 、DIC 、CSD 、SI答案:A7. ()是用二进制编码的机器指令的集合及一组使用机器指令的规则,是CPU能直接识别的唯一语言。
A 、汇编语言B 、机器语言C 、JAVA语言D 、C语言答案:B8. 源程序模块结束语句为()A 、ORGB 、ENDC 、SEGMENTD 、START答案:B9. 8位补码表示的有符号数的表示范围是()A 、0~255B 、-128~+127C 、0~65535D 、-32768~+32767答案:B10. 在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来,下列说法正确的是()A 、占内存空间小,但速度慢B 、占内存空间大,但速度快C 、占内存空间相同,但速度快D 、占内存空间相同,但速度慢答案:B11. 与LEABX ,BUF指令完全等效的指令是()。
A 、MOV BX ,BUFB 、LDS BX ,BUFC 、MOV BX ,OFFSET BUFD 、MOV BX ,WORD PTR BUF答案:C12. 14的非压缩BCD码为()A 、00010100B 、01000001C 、0000000000010100D 、0000000100000100答案:D13. 要实现使BETA的值为56,应采用的语句是()A 、BETA DB 56B 、BETA DB 56HC 、BETA EQU 56HD 、BETA EQU 56答案:D14. ()不可以做目的操作数A 、立即数B 、寄存器C 、存储器操作数D 、累加器答案:A15. 计算机一般由中央处理器、存储器和输入/输出子系统组成,其中()可以存放程序、数据、信息及中间结果。
MCS—51单片机指令系统及程序设计一.单项选择题,从供选择的答案中选出正确的选项,并将标号填写到答题册中,每小题1分。
1.MCS-51汇编语言指令格式中,唯一不可缺少的部分是B。
A.标号 B.操作码 C.操作数 D.注释2.MCS-51的立即寻址方式中,立即数前面D。
A.应加前缀“/:”号B.不加前缀号C.应加前缀“@”号D.应加前缀“#”号3.下列完成8031单片机内部RAM数据传送的指令是D。
A.MOVX A,@DPTR B.MOVC A, @A+PCC.MOV A,#data D.MOV direct,direct4.MCS-51的立即寻址的指令中,立即数就是B。
A.放在寄存器R0中的内容 B.放在程序中的常数C.放在A中的内容D.放在B中的内容5.单片机中PUSH和POP指令常用来C。
A.保护断点B.保护现场C.保护现场,恢复现场 D.保护断点,恢复断点6.MCS-51寻址方式中,操作数Ri加前缀“@”号的寻址方式是A。
A.寄存器间接寻址 B.寄存器寻址 C.基址加变址寻址 D.立即寻址7.MCS-51寻址方式中,位寻址的寻址空间是 D 。
A.工作寄存器R0~R7 B.专用寄存器SFR C.程序存贮器ROMD.片内RAM的20H~2FH字节中的所有位和地址可被8整除的SFR的有效位8.MCS-51寻址方式中,直接寻址的寻址空间是D。
A.工作寄存器R0~R7 B.专用寄存器SFR C.程序存贮器ROM D.片内RAM 00H--7FH的128字节和80H--FFH中的SFR9.执行指令MOVX A,@DPTR时,、脚的电平为C。
A.高电平,高电平 B.低电平,高电平C.高电平,低电平 D.低电平,低电平10.主程序执行完ACALL后返回主程序后,堆栈指针SP的值A。
A.不变 B.加2 C.加4 D.减211.单片机中使用MOVX A,@R1指令 C 寻址数据存贮器1050H单元。
A.能直接B.不能C.与P2口配合能 D.与P1口配合能12.下列指令判断若P1口最低位为高电平就转LP,否则就执行下一句的是B。
汇编语⾔test1汇编语⾔1⼀、简答题1.下⾯程序段执⾏后,寄存器BX的值发⽣什么变化?(不考虑溢出)SAL BX,1PUSH BXMOV CL,4SAL BX,CLPOP CXSUB BX,CX乘以 30d2.对于这样的程序段:CMP AX,BXJGE NEXTXCHG AX,BXNEXT: CMP AX,CXJGE DONEXCHG AX,CXDONE: ┆试回答:①上述程序执⾏后,原有AX,BX,CX中最⼤数存放在哪个寄存器?AX②这三个数是带符号数还是⽆符号数?G,所以是有符号数3.已知寄存器(DS)=1000H,(SS)=1110H,(BX)=100H,(BP)=100H,(SI)=0002H,(SP)=100H;内存单元中的(10100H)=12H,(10101H)=34H,(10102H)=56H,(10103H)=78H,(11200H)=0ABH,(11201H)=0CDH,(11202H)=0EFH,(11203H)=0D3H。
试说明下列各指令执⾏完后AX寄存器的内容。
指令(写个思路,其他⾃⼰搞) AX的内容① MOV AX,1200H ① 1200(直接给)② MOV AX,BX ② 0100h③ MOV AX,[1200H] ds:1200(10000+1200=11200)③所以读(11201和11200内容)0CDABH④ MOV AX,[B P] BP:找SS:bp 11100+100=11200同理读11201和11200内容⑤ MOV AX,1100H[BX] [BX]:找 ds:1100+bx ⑤⑥ MOV AX,[BX][SI] ds:bx+si ⑥⑦ MOV AX,1100H[BX][SI] ds:bx+si+1100 ⑦⑧ POP AX ss:sp⑧4. A DB 0F8HB DB 3 DUP(?)┇LEA DI,BMOV CX,3MOV AL,ALOP:SAR AL,1MOV [DI],ALINC DILOOP LOPOFCH OFEH OFFH上述程序段运⾏后,从B单元开始依次存放的数据是多少?5.执⾏下⾯的程序段后,AX和BX寄存器的内容各是多少?MOV AX,1MOV BX,23MOV SI,10XCHG AX,BXMUL SIADD BX,AXAX=230 BX=231⼆、程序填空题下⾯是⼀个.com⽂件格式的程序,完成从键盘上输⼊⼀个4位以内的16进制数,并以10进制形式显⽰出来。
51汇编,最基础的短程序练习1:把片内RAM的30H处的值送往片外RAM的2000H处。
MOV A , 30HMOV DPTR, #2000HMOVX @DPTR, A作业要求:在30H处先赋值为(学号后三位mod 250),每步结果的相关部分截图连成word文档或博客,以下同。
2:假设A中的内容为34H,R0指向的单元内容为56H.执行下列指令后看结果。
MOV R6,#29HXCH A,R6SWAP AXCH A,R6XCHD A,@R0 ; 最后A=36H,((R0))=54H3:设1067H存在R1R0中,30A0H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。
MOV A,R0ADD A,R2MOV R4,AMOV A,R1ADDC A,R3MOV R5,A4:将外部RAM的100H单元中的内容送到外部RAM 的200H单元中。
MOV DPTR ,#0100HMOVX A, @DPTRMOV DPTR,#0200HMOVX @DPTR,A作业要求:在100H处先赋值为(学号后三位mod 250)5:把片内RAM的30H的值(是压缩BCD码)展开为非压缩BCD码放41H,42H处。
(高位放41H处)MOV A, 30HANL A, #0FHMOV 42H, AMOV A, 30HSWAP AANL A, #0FHMOV 41H, A作业要求:在30H处赋值后直接显示为学号后两位再开始6:将A扩大十倍(A值不大于25,不溢出)方法一:MOV B, #10MUL AB方法二:(不用MUL的办法)MOV B, AADD A, BMOV R0,AADD A, R0ADD A, BMOV B, AADD A, B作业要求:在A处赋值为学号最后一位(为0输倒第2位) 7:编程要求当R0中的数等于10H则R1赋0,小于10H则R1赋FF,大于10H则R1赋AAH。
CJNE R0, #10H,L1MOV R1,#0AJMP L3L1:JC L2 ;注1MOV R1,#0AAH ;注2AJMP L3L2:MOV R1,#0FFHL3:SJMP L37’:符号函数:当R0中的数=0则R1赋0,小于0则R1赋-1(即FFH),大于0则R1赋01H。
一、单项选择题从每小题的四个备选答案中,选出一个正确答案,并将正确答案的番号填人括号内。
1.用来存放下一条将要执行的指令地址的寄存器是(B)A.SP B.IP C.BP D.CS2.要使串处理从低地址向高地址进行,应把标志位置为(D)A.IF=1B.TF=0C.DF=1D.DF=03.使状态标志位CF清零的错误指令是(C)A.OR AX,AX B.SUB AX,AXC.MOV CF,0D.CLC4.设SP=1110H,执行PUSH AX指令后,SP的内容为(B)A.SP=1112H B.SP=110EHC.SP=1111H D.SP=110FH5.汇编源程序出现语法错误的指令有(D)A.MOV[BX+SI],AL B.MOV AX,[BP+DI]C.MOV DS,AX D.MOV CS,AX6.下列串操作指令中,必须同时指明源串和目的串地址的指令是(D)A.STOSW B.LODSWC.SCASW D.CMPSW7.设BL中有一无符号数,实现把BL中的数乘以2,应选用的指令是(B)A.SHR BL,1B.SHL BL,1C.SAR BL,1D.RCR BL,18.执行PUSH AX指令的正确步骤是(A)A.1.SP←SP-1,(SP)←AH B.1.(SP)←AH,SP←SP-12.SP←SP-1,(SP)←AL2.(SP)←AL,SP←SP-1C.1.SP←SP+1,(SP)←AH D.1.(SP)←AH,SP←SP+12.SP←SP+1,(SP)←AL2.(SP)←AL,SP←SP+19.CF=1时转移到目标地址的条件转移指令是(B)A.JNC B.JC C.JZ D.JS10.在执行NEG指令时,对标志位CF有影响,其影响的规则是(C)A.对正数求补时,CF=0B.对负数求补时,CF=0C.对非零数求补时,CF=1D.对零求补时,CF=111.算术右移SAR和逻辑右移SHR两条指令执行后结果完全相同的情况是(A)A.目的操作数最高位为0B.目的操作数最高位为1C.目的操作数为任意情况D.无论什么情况都不可能相同12.设AL=04H,BL=0F8H,执行IMUL BL指令后,结果是(D)A.AX=0032H B.AX=00E0HC.AX=03E0H D.AX=0FFE0H13.指令的操作数中,允许出现表达式,例如BUF1与BUF2均为变量名,下面指令中语法正确的是(D)A.MOV AX,BUFl*BUF2B.MOV AX,BUF1/BUF2C.MOV AX,BUF1+ES:BUF2D.MOV AX,BUF2-BUF114.下面指令中,操作数的寻址方式为寄存器间接寻址的指令是(C )A.INC WORD PTR [BX+SI]B.INC CX,[SI+COUNT]C.NEG BYTE PTR [BX]D.ADD AX,B15.NUM EQU 80HDA DB 34HAND DA,NUM上述语句执行后,DA 中的内容是(D )A.0B4H B.80H C.34H D.016.直接、间接、立即三种寻址方式指令的执行速度,由快至慢的排序为(A )A.立即、直接、间接B.直接、间接、立即C.直接、立即、间接D.不一定17.语句DA1DB 2DUP(3,5,7)汇编后,该语句可等同于的语句是(D )A.DA1DB 3,5,7B.DA1DB 2,3,5,7C.DA1DB 3,5,7,2D.DA1DB 3,5,7,3,5,718.MOV AL,80HMOV CL,2SAR AL,CL上述指令序列执行后,结果是(D )A.AL=40H B.AL=20HC.AL=0C0H D.AL=0E0H19.下面是实现将AL 内容加1的压缩型BCD 码加法程序段,其中正确的指令序列是(A )A.INC AL B.ADD AL,1DAA DASC.ADD AL,1D.STCDAA AAA20.现有数据存储如图所示:30100H 30101H 30102H 30103H 设AL=01H,BX=0100H,DS=3000H 执行换码指令XLAT 后正确的结果是(B )A.AL=20H B.AL=38HC.AL=00H D.AL=41H21.若定义DAT DW 'A',则(DAT)和(DAT+1)两个相邻的内存中存放的数据是(B )A.0041H B.4100H 20H38H41H55HC.xx41H D.41xxH[注]选项C.和D.中的XX表示任意数据。
习题一1.1 把下列2、8、16进制数转换成为十进制数(1)(1011011)2(2)(0.10110)2(3)(111111.01)2(4)(1000001.11)2(5)(377)8(6)(0.24)8(7)(3FF)16(8)(2A.4)16解:(1)(1011011)2=64+16+8+2+1=91另解:原式=(5B)16=5×16+11=91(2)(0.10110)2=0.5+0.125+0.0625=0.6875(3)(111111.01)2=32+16+8+4+2+1+0.25=63.25另解:原式=(1000000-1+0.01)2=64-1+0.25=63.25(4)(1000001.11)2=64+1+0.5+0.25=65.75(5)(377)8=3×64+7×8+7=255另解:原式=(400-1)8=4×64-1=255(6)(0.24)8=2×0.125+4×0.015625=0.3125(7)(3FF)16=3×256+15×16+15=1023另解:原式=(400-1)16=4×256-1=1023(8)(2A.4)16=2×16+10+4×0.0625=42.25另解:原式=2×16+10+4÷16=42.251.2 把下列十进制数转换为2、16进制数(1)(127)10(2)(33)10(3)(0.3)10(4)(0.625)10(5)(1023.5)10(6)(377)10(7)(1/1024)10(8)(377/32)10解:(1)(127)10 =64+32+16+8+4+2+1= (111 1111)2=(7F)16另解:原式=(128-1)10=(1000 0000-1)2=(111 1111)2=(7F)16(2)(33)10 =32+1= (10 0001)2=(21)16(3)(0.3)10 = (0.0100 1100 1……)2=(0.4CCC……)16(4)(0.625)10= 0.5+0.125=(0.101)2=(0.A)16(5)(1023.5)10 = 512+256+128+64+32+16+8+4+2+1+0.5=(11 1111 1111.1)2=(3FF.8)16(6)(377)10 =256+64+32+16+8+1=(1 0111 1001)2=(179)16(7)(1/1024)10=(0.0000 0000 01)2=(0.004)16(8)(377/32)10=(256+64+32+16+8+1)÷(32)=(101111001)2÷(100000)2=(1011.11001)2=(0B.C1)161.3 把下列二进制数转换为十六进制数(1)(100011)2(2)(0.11101)2(3)(11111.11)2(4)(0.00101)2解:(1)(100011)2=(10’0011)2=23H(2)(0.11101)2=(0.1110’1000)2=0.E8H(3)(11111.11)2=(1’1111.1100)2=1F.CH(4)(0.00101)2=(0.0010’1000)2=0.28H1.4 把下列十六进制数转换为二进制数(1)(3B6)16(2)(100)16(3)(80.2)16(4)(2FF.A)16解:(1)(3B6)16 =(0011 1011 0110)2(2)(100)16 =(0001 0000 0000)2(3)(80.2)16 =(1000 0000.0010)2(4)(2FF.A)16 =(0010 1111 1111.1010)21.5 如果用24b储存一个无符号数,这个数的范围是什么?如果储存的是一个补码表示的有符号数,那么这个数的范围又是什么?答:如果用24b储存一个无符号数,这个数的范围应为:0~224-1如果用24b储存一个补码表示的有符号数,这个数的范围应为:-223~+223-11.6 两个无符号数,它们的大小等于十进制数210和303,用N位二进制存储时,相加产生了进位,用N+1位二进制存储时,相加没有产生进位。
单片机汇编程序设计练习
一、存储器之间的数据传送
1、编程实现将单片机内部 RAM60H 开始的连续 32个单元置为 FFH 。
MOV R0,#60H
MOV R7,#32
MOV R1,#0FFH
MOV A,R1
LOOP: MOV @R0,A
INC R 0
DJNZ R7,LOOP
SJMP $
END
2、编程实现将内部 RAM30H 开始的连续 16个数传送到内部 RAM50H 开始的连续单元中。
MOV R0,#30H
MOV R1,#50H
MOV R7,#16
LOOP: MOV A,@R0
MOV @R1,A
INC R 0
INC R 1
DJNZ R7,LOOP
SJMP $
END
3、编程实现将单片机外部 RAM2000H 为首地址的数据块传送到单片机内部RAM30H 开始的单元中,数据块的长度为 32个字节。
4、编程实现将单片机内部 RAM30H 为首地址的数据块传送到外部
RAM2000H 开始的单元中,数据块的长度存放于内部 RAM 的 20H 单元。
5、编程实现将单片机外部 RAM2000H 为首地址的数据块传送到单片机内部RAM30H 开始的单元中,直到数据内容为 0DH 时停止传送。
6、编程实现将 ROM1000H 地址的内容传送到内部 RAM 的 25H 单元。
7、编程实现将 ROM2000H 开始的连续 10个地址的内容传送到内部 RAM 的25H 开始的单元。
8、编程实现将 ROM1000H 开始的连续 100个地址的内容传送到外部
RAM2000H 开始的连续单元中。
二、查表程序设计
1、编写查表程序, 要查表的数据存放在 R7中, 其范围为 0~9。
编程查其平方值, 并存放于 40H 。
2、编写查表程序, 要查表的数据存放在 R7中, 其范围为 0~9。
编程查其立方值, 并存放于 R6。
3、单片机外部 ROM TAB1地址开始存放一组 ASCII 码表,试用查表方法,将R2的内容 (范围为 0~F 转换为与其对应
的 ASCII 码,并从 P1口输出。
4、使用 8051的 P1口作为段控驱动共阳
LED 数码管,硬件连接如图。
编程实现将 8051 R7单元内容 (在
00H-09H 之间显示在数码管上。
00H-09H
的共阳字形代码如下表所示。
三、多字节无符号数的加减法
1、编一个三字节无符号数的减法程序。
被减数存放在内部 RAM 的 30H 开始的连续三个单元中(高位在高地址 ,减数存放在内部 RAM 的 40H 开始的连续三个单元中(高位在高地址 ,请将差存放在内部 RAM 的 50H 开始的连续三个单
元中(高位在高地址 ,借位存放在 01H 位地址
2、编一个四字节无符号数的加法程序。
被加数存放在内部 RAM 的 25H 开始的连续四个单元中(高位在高地址 ,加数存放在内部 RAM 的 55H 开始的连续四个单元中(高位在高地址 ,请将和存放在内部 RAM 的 25H 开始的连续四个单元中(高位在高地址 ,进位存放 29H 字节地址中。
3、编一个 N 字节无符号数的加法程序。
被加数存放在内部 RAM 的符号地址 AAA 开始的连续单元中(高位在低地址 ,加数存放在内部 RAM 的符号地址 BBB 开始的连续单元中 (高位在低地址 , 请将和存放在内部 RAM 的 AAA 开始的连续单元中,进位存放符号地址 JWEI 字节。
四、多路散转
1、请编程实现根据 A 的值进行多路散转的程序。
即当 A=0时,调用 PRO0子程序;当 A=1时,调用 PRO1子程序……,当 A=10时,调用 PRO10子程序。
2、请编程实现根据 R7 的值进行 128路散转的程序。
即当(R7 =0时,调用 CHULI0子程序;当(R7 =1时,调用 CHULI1子程序……,当 A=128时,调用 CHULI128子程序。
五、软件定时程序设计
计算下面程序的延时时间:
1、 MOV R6, #TIME
LOOP :NOP
NOP
DJNZ R6, LOOP
计算当 TIME=0、 1、 2、 255时的延时时间
2、 MOV R7, #TIME1
LOOP0:MOV R6, #TIME2
LOOP1:NOP
NOP
DJNZ R6, LOOP1
DJNZ R7, LOOP0
六、数据检索程序设计
1、在内 RAM20H~3FH地址的 32个单元中,存放一批数据,试检索是否有与 R0寄存器内容相等的数,若检索成功,将该数据地址存放在 R1,否则将 FFH 存放在 R1中。
2、在内 RAM20H~29H地址的 10个单元中,存放一批数据,试检索是否含有立即数 30H ,若检索成功,将该数据地址存放在 31H ,否则将 FFH 存放在 31H 。
3、统计内 RAM20H — 4FH 单元中内容为“ 0”的个数,并把结果存入 50H 单元。
七、极值查找
1、将内部 RAM50H 、 51H 单元两个无符号数中较大的数存入 60H 单元。
2、在内部 RAM 40-4FH中存在 16个无符号数, 找出其中的最小数, 存放到
50H 单元。
先画出程序框图,再编程。
3、内部 RAM 中有一个数据块,首地址为 30H ,长度存放在 2BH 单元,要求把其中的最大值找出,并放到以 20H 单元。
、
4、内部 RAM 以 30H 为首地址的一个数据块,第一个数据为该数据长度。
试求该数据的最大值, 把结果放在内部 RAM 的 70H 单元中。
画出程序流程图并编写
程序。
*5、内部 RAM20H 开始存放一组有符号的数, 数据个数存放在内部 RAM1FH 单元中,请编程统计其中大于 0、等于 0、小于 0的数的个数,分别存放于 70H 、71H 、 72H 。
*6、内部 RAM20H 开始存放一组有符号的数, 数据个数存放在内部 RAM1FH 单元中,请编程将其中大于 0、等于 0、小于 0的数分别存放于 70H 、 60H 、 50H 开始的连续单元中。