51汇编程序练习题1
汇编语言程序设计练习题及参考答案
一、单项选择题从每小题的四个备选答案中,选出一个正确答案,并将正确答案的番号填人括号内。
1.用来存放下一条将要执行的指令地址的寄存器是 (B )A.SP B.IP C.BP D.CS2.要使串处理从低地址向高地址进行,应把标志位置为 (D )A.IF=1 B.TF=0C.DF=1 D.DF=03.使状态标志位CF清零的错误指令是 (C )A.OR AX,AX B.SUB AX,AXC.MOV CF,0 D.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,1 B.SHL BL,1C.SAR BL,1 D.RCR BL,18.执行PUSH AX指令的正确步骤是 (A )A.1.SP←SP-1,(SP)←AH B.1.(SP)←AH,SP←SP-12.SP←SP-1,(SP)←AL 2.(SP)←AL,SP←SP-1C.1.SP←SP+1,(SP)←AH D.1.(SP)←AH,SP←SP+12.SP←SP+1,(SP)←AL 2.(SP)←AL,SP←SP+19.CF=1 时转移到目标地址的条件转移指令是 (B )A.JNC B.JC C.JZ D.JS10.在执行NEG指令时,对标志位CF有影响,其影响的规则是 ( C )A.对正数求补时,CF=0 B.对负数求补时,CF=0C.对非零数求补时,CF=1 D.对零求补时,CF=111.算术右移SAR和逻辑右移SHR两条指令执行后结果完全相同的情况是(A )A.目的操作数最高位为0 B.目的操作数最高位为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 .0B4HB .80HC .34HD .016.直接、间接、立即三种寻址方式指令的执行速度,由快至慢的排序为 (A )A .立即、直接、间接B .直接、间接、立即C .直接、立即、间接D .不一定17.语句DA1 DB 2 DUP(3,5,7)汇编后,该语句可等同于的语句是 (D )A .DA1 DB 3,5,7B .DA1 DB 2,3,5,7C .DA1 DB 3,5,7,2D .DA1 DB 3,5,7,3,5,718. MOV AL ,80HMOV CL ,2SAR AL ,CL上述指令序列执行后,结果是 (D )A .AL=40HB .AL=20HC .AL=0C0HD .AL=0E0H19.下面是实现将AL 内容加1的压缩型BCD 码加法程序段,其中正确的指令序列是 (A ) A .INC ALB .ADD AL ,1DAA DASC .ADD AL ,1 D .STCDAA AAA20.现有数据存储如图所示:30100H 30101H 30102H 30103H设AL=01H ,BX=0100H ,DS=3000H 执行换码指令XLAT 后正确的结果是(B )A .AL=20HB .AL=38HC .AL=00HD .AL=41H21.若定义DAT DW 'A',则(DAT)和(DAT+1)两个相邻的内存中存放的数据是 (B )A .0041HB .4100H20H38H41H55HC.xx41H D.41xxH[注]选项C. 和D.中的XX表示任意数据。
汇编程序复习题(1)
汇编程序复习题(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。
汇编语言程序设计补充习题
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,@DPTRB.MOVC A, @A+PCC.MOV A,#dataD.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。
汇编51单片机考试常见试题
汇编51单⽚机考试常见试题汇编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作基址寄存器。
汇编51单片机考试常见试题
汇编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作基址寄存器。
51汇编程序练习题1.
单片机汇编程序设计练习一、存储器之间的数据传送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
练习题一、填空题1.MCS-51单片机引脚信号中,信号名称带上划线的表示该信号或有效。
2.通过堆栈操作实现子程序调用,首先要把的内容入栈,以进行断点保护。
调用返回时再进行出栈操作,把保护的断点送回。
3.某程序初始化时使(SP)=40H,则此堆栈地址范围为,若使(SP)=50H,则此堆栈深度为。
4.在相对寻址方式中,“相对”两字是指相对于,寻址得到的结果是。
在寄存器寻址方式中,指令中指定寄存器的内容就是。
在变址寻址方式中,以作变址寄存器,以或作基址寄存器。
5.假定累加器(A)=49H,执行指令:201AH:MOVC A,@A+PC后,送入A的是程序存储器单元的内容。
6.若(DPTR)=5306H,(A)=49H,执行下列指令:MOVC A,@A+DPTR后,送入A的是程序存储器单元的内容。
7.假定(SP)=45H,(ACC)=46H,(B)=47H,执行下列指令:PUSH ACCPUSH B后,(SP)= ,(46H)= ,(47H)= 。
8.假定(SP)=47H,(46H)=46H,(47H)=47H。
执行下列指令:POP DPHPOP DPL后,(DPTR)= ,(SP)= 。
9.若(A)=56H,(R0)=56H,(56H)=56H。
执行指令:ADD A,@R0后,(A)= ,(CY)= ,(AC)= ,(OV)= 。
10.若(A)=0FFH,(R0)=46H,(46H)=0FFH,(CY)=1。
执行指令:ADDC A,@R0后,(A)= ,(CY)= ,(AC)= ,(OV)= 。
11.假定(A)=45H,(B)=67H。
执行指令:MUL AB后,寄存器(B)= ,累加器(A)= ,(CY)= ,(OV)= 。
12.假定(A)=0FCH,(B)=35H。
执行指令:DIV AB后,累加器(A)= ,寄存器(B)= ,(CY)= ,(OV)= 。
13.为实现内外程序存储器的衔接,应使用信号进行控制,对8031,EA= ,CPU对进行寻址;对80C51,EA=1,CPU对寻址。
汇编语言程序设计模拟试题及参考答案1
汇编语言程序设计模拟试题及参考答案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二、判断题(判断每题正误,对的在题后的括号内打“√”;错的在题后的括号内打“×”)。
汇编语言程序设计试题
汇编语言程序设计试题一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.设SS=2050H,SP=0140H,则栈顶存贮单元的物理地址是( A )A.20640H B.2063EHC.2063FH D.21900H2.使用DOS功能调用时,子程序编号应放在( B )A.AL B.AHC.AX D.任意指定3.没有..语法错误的输出指令是( B ) P76A.OUT AX,30H B.OUT DX,ALC.OUT AL,DX D.OUT 30H,AH4.用MOV指令将十进制数89以非压缩BCD码格式送入AX,可使用的指令是( B ) A.MOV AX,89 B.MOV AX,0809HC.MOV AX,89H D.MOV AX,08095.设AX=8765H,DX=4321H,执行CWD指令后,DX中的内容是( B ) P117A.4321H B.0FFFFHC.8000H D.0001H6.设CL=05H,要获得CL=0AH,可选用的指令是( A)A.XOR CL,0FH B.NOT CLC.OR CL,0AH D.AND CL,0FH7.假设执行ADD指令后AL=8CH,再执行DAA指令,AL中的值是( A )A.92H B.0104HC.74H D.8CH8.MOV AL,79HADD AL,B1H上面指令执行后,设置的标志位CF和ZF的值是( D )A.CF=0,ZF=1 B.CF=l,ZF=1C.CF=0,ZF=0 D.CF=1,ZF=09.TEST DL,55H P123JZ NEXTNEXT:………上述程序段,执行JZ指令时能产生转移的情况是( D )A.DL>55H B.DL<55HC.DL=55H D.DL中第0、2、4、6位均为010.假设AL=28H, 执行ROL AL,1 指令之后的情况是( D ) P125A.AL=14H, CF=1 B.AL=50H, CF=1C.AL=14H, CF=0 D.AL=50H, CF=011. 98的BCD码是(B)A)10011001 B) 10011000 C) 10011010 D) 1000101012. –0110110 的补码是(A)A) 11001010 B) 11001001 C) 10110110 D) 0011011013. 十进制数92对应的二进制数为(A)A) 01011100 B) 01011101 C) 11011100 D) 1100010114. 十六进制38H相应的十进制数是(B)A) 32 B) 56 C) 58 D) 6015. 运算器的主要功能是进行__(C)__A) 逻辑运算B) 算术运算C) 逻辑运算与算术运算D) 初等函数的运算16. 下列不能做输入的是(C)A) 键盘B) 扫描仪C) 打印机D) 鼠标17. 8086状态字PSW中表示进位的标志位是(B)A) ZF B) CF C) PF D) OF18. 8086状态字PSW中表示运算结果为零的标志位是(A)A) ZF B) CF C) PF D) OF19. 将一个字数据入栈(PUSH AX), 栈指针如何变化(A)A) SP<-SP-2 B) SP<-SP-1 C) SP<-SP+2 D) SP<-SP+120. 将一个字节数据入栈(PUSH AL), 栈指针如何变化(B)A) SP<-SP-2 B) SP<-SP-1 C) SP<-SP+2 D) SP<-SP+121. 指出该条指令的寻址方式MOV AX, [DI] (C)A) 立即寻址B) 寄存器寻址C) 寄存器间接寻址D) 直接寻址22. CPU处理动作的最小单位是(B)A) 指令周期B)时钟周期C) 总线周期D) 机器周期23.设BX=1234H,DS=2000H,(21234H)=5678H,则指令“LEA SI,[BX]”执行后的结果是P74(B)A.SI=5678HB.SI=1234HC.SI=2000HD.SI=3234H24.设BX=1234H,DS=2000H,(21234H)=5678H,则指令“MOV SI,[BX]”执行后的结果是P74(a)A.SI=5678HB.SI=1234HC.SI=2000HD.SI=3234H二、填空题(本大题共10空,每空1分,共10分)请在每小题的空格中填上正确答案。
51 单片机 汇编例题解析
12:58:06
例 3 x, y均为8位二进制数, 设 x存入R0, y 存入R1, 求解: y=syn(x)
12:58:06
例 3 x, y均为8位二进制数, 设 x存入R0, y存入R1, 求解: y=syn(x)
程序如下:
START: CJNE R0, #00H, SUL1 ; R0中的数与00比较不等转移
MOV R1, #00H; 相等, R1← 0
SJMP SUL2
SUL1: JC NEG ; 两数不等, 若(R0)<0, 转向NEG MOV R1, #01H ; SJMP SUL2 NEG : MOV R1, #0FFH ; (R0)<0, 则 R1←0FFH
(Hale Waihona Puke 0)>0, 则 R1←01H
SUL2 : RET
12:58:06
例 6 位)。
设在内部 RAM的BLOCK单元开始处有长度为LEN个的无符号数据块,
试编一个求和程序 , 并将和存入内部 RAM 的 SUM 单元(设和不超过
8
BLOCK EQU 20H LEN EQU 30H SUM EQU 40H START: CLR A ; 清累加器A MOV R2, #LEN; 数据块长度送R2 MOV R1, #BLOCK ; 数据块首址送R1 LOOP: ADD A, @R1 ; 循环加法 INC R1; 修改地址指针 DJNZ R2, LOOP ; 修改计数器并判断 MOV SUM, A; 存和 RET
12:58:06
正确程序如下:
SUBF : MOV A,R0
JZ ZERO
JB ACC.7 , NEG
MOV R1, #1
ZERO : MOV R1 , #0
汇编语言test1
汇编语⾔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单片机指令系统练习题
.MCS—51单片机指令系统及程序设计一、判断题()1.MCS—51单片机的指令格式中操作码与操作数之间必须用“,”分隔。
()2.MCS—51指令:MOV A,#40H ;表示将立即数40H传送至A中。
()3.MCS—51指令:MOV A,@R0 ;表示将R0指示的地址单元中的内容传送至A中。
()4.MCS—51指令:MOVX A,@DPTR ;表示将DPTR指示的地址单元中的内容传送至A中。
()5.MCS—51的数据传送指令是把源操作数传送到目的操作数,指令执行后,源操作数改变,目的操作数修改为源操作数。
()6.MCS—51指令中,MOVX为片外RAM传送指令。
()7.MCS—51指令中,MOVC为ROM传送指令。
()8.将37H单元的内容传送至A的指令是:MOV A,#37H。
()9.MCS—51指令中,16位立即数传送指令是:MOV DPTR,#data16。
()10.MCS—51单片机,CPU对片外RAM的访问只能用寄存器间接寻址的方式,且仅有4 条指令。
()11.如JC rel发生跳转时,目标地址为当前指令地址加上偏移量。
()12.对于8051单片机,当CPU对内部程序存储器寻址超过4K时,系统会自动在外部程序存储器中寻址。
()13.指令MUL AB执行前(A)=F0H,(B)=05H,执行后(A)=FH5,(B)=00H。
()14.已知:DPTR=11FFH 执行INC DPTR后,结果:DPTR=1200H。
()15.已知:A=11H B=04H,执行指令DIV AB后,其结果:A=04H,B=1 CY=OV=0。
()16.已知:A=1FH,(30H)=83H,执行 ANL A,30H 后,结果:A=03H (30H)=83H P=0。
()17.无条件转移指令LJMP addr16称长转移指令,允许转移的目标地址在128KB空间范围内。
()18.MCS—51指令系统中,执行指令FGO bit F0 ,表示凡用到F0位的指令中均可用FGO 来代替。
汇编作业必记51短程序练习
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。
单片机试题及答案
C51单片机习题及答案第一章1-1选择1.计算机中最常用的字符信息编码是( A )A ASCIIB BCD码C 余3码D 循环码2.要MCS-51系统中,若晶振频率屡8MHz, 一个机器周期等于(A )u sA 1.5B 3C 1D 0.53.MCS-51的时钟最高频率是(A ).A 12MHzB 6 MHzC 8 MHzD 10 MHz4.以下不是构成的控制器部件(D ):A程序计数器、B指令寄存器、C指令译码器、D存储器5.以下不是构成单片机的部件(D )A 微处理器(CPU)、B存储器C接口适配器(1\0接口电路)D打印机6.下列不是单片机总线是(D )A地址总线B控制总线C数据总线D输出总线7.-49D的二进制补码为.(B )A 11101111B 11101101C 0001000D 111011008.十进制29的二进制表示为原码(C )A 11100010B 10101111C 00011101D 000011119. 十进制0.625转换成二进制数是(A)A 0.101B 0.111C 0.110D 0.10010选出不是计算机中常作的码制是( D )A原码B反码C补码D ASCII1-2填空1.计算机中常作的码制有原码、反码和补码2.十进制29的二进制表示为000111013.十进制数-29的8位补码表示为.111000114.单片微型机CPU、存储器和I\O接口三部分组成.5.若不使用MCS-51片内存器引脚EA必须接地.6.输入输出设备是计算机与外部世界交换信息的载体.7.十进制数-47用8位二进制补码表示为.110100018.-49D的二进制补码为.111011019.计算机中最常用的字符信息编码是ASCII10.计算机中的数称为机器数,它的实际值叫真值。
1-3判断1.我们所说的计算机实质上是计算机的硬件系统与软件系统的总称。
(V )2.MCS-51 上电复位时,SBUF=00H。
汇编语言程序设计习题及答案
习题一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位二进制存储时,相加没有产生进位。
51 单片机 汇编例题
START: CLR C
; 将Cy清零
MOV R0, #41H ; 将被加数地址送数据指针R0
MOV R1, #51H ; 将加数地址送数据指针R1
AD1: MOV A, @R0 ; 被加数低字节的内容送入A
ADD A,@R1
; 两个低字节相加
MOV @R0, A
; 低字节的和存入被加数低字节中
DEC R0
2021/5/15
例8 在内部 RAM中从50H单元开始的连续单元依次存放了一 串字符,该字符串以回车符为结束标志,测试该字符串长度。
程序如下: START: MOV R2, #0FFH MOV R0, #4FH ; 数据指针R0置初值 LOOP: INC R0 INC R2 CJNE @R0, #0DH, LOOP RET
2021/5/15
6 查表程序设计
查表程序是一种常用程序, 它广泛使用于 LED显示控制、 打印机打印控制、 数据补偿、数值计算、转换等功能程序中, 这类程序具有简单、执行速度快等特点。
所谓查表法, 就是预先将满足一定精度要求的表示变量与函数值之间关系的 一张表求出, 然后把这张表存于单片机的程序存储器中, 这时自变量值为单元地址, 相应的函数值为该地址单元中的内容。查表, 就是根据变量 X在表格中查找对应 的函数值 Y, 使 Y=f(X)。
设测得的A/D转换结果已存入 20H#, 21H单元中(高位字节在20H中, 低位 字节在21H中), 查表得到的温度值存放在22H#,23H单元(高位字节在 22H中, 低位字节在23H中)。
2021/5/15
程序如下:
FTMP: MOV DPTR, #TAB ; DPTR← MOVA, 21H ; (20H)(21H)×2 CLRC RLCA MOV21H, A MOVA, 20H RLCA MOV20H, A MOVA, 21H ; 表首地址+偏移量 ADDC A, DPL MOVDPL, A
汇编程序模拟题(有答案)
4、DATA SEGMENT S9 DB 0,1,2,3,4,5,6,7,8,9 DATA ENDS ┇ LEA SI,S9 LEA,DI,S9+1 MOV CX,5 LOP:MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL ADD SI,2 ADD DI,2 LOOP LOP 上述程序段运行后,S9开始的10个字节存储单元内容是什么?(1,0,3,2,5,4,7,6,9,8)
2、在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。 DATA SEGMENT BUF1 DW -56,24,54,-1,89,-8…… BUF2 DW 45,-23,124,345,-265,… SUM DW 10DUP(0) DATA ENDS 循环结构(计数式)和分支结构
4、对寄存器AX的内容乘以4的正确指令序列是(B)。 A、SHR AX,1 /SHR AX,1 B、SHL AX,1/ SHL,AX,1 C、ROL AX,1 /ROL AX,1 D、RCR AX,1/ RCR AX,1 5、执行INC指令除对SF、ZF有影响外,还要影响的标志位是(A)。 A、OF,AF,PF B、OF,AF,CF C、OF,PF,CF D、AF,PF,CF 6、设DH=10H,执行NEG DH指令后,正确的结果是(D)。 A、DH=10H CF=1 B、DH=0F0H CF=0 C、DH=10H CF=0 D、DH=0F0H CF=1
15、在汇编语言程序的开发过程中使用宏功能的顺序是(C)。 A、宏定义,宏调用 B、宏定义,宏展开 C、宏定义,宏调用,宏展开 D、宏定义,宏展开,宏调用 16、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是(B)。 A、名字项 B、操作项 C、操作数项 D、注释项 17、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有(D)。 A、CMP B、SUB C、AND D、MOV 18、为使CX=-1时,转至MINUS而编制了指令序列,其中错误的序列是(C)。A、INC CX /JZ MINUS B、SUB CX,OFFFFH /JZ MINUS C、AND CX,OFFFFH/ JZ MINUS D、XOR CX,OFFFFH /JZ MINUS
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机汇编程序设计练习
一、存储器之间的数据传送
1、编程实现将单片机内部RAM60H开始的连续32个单元置为FFH。
2、编程实现将内部RAM30H开始的连续16个数传送到内部RAM50H开始的连续单元中。
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
的共阳字形代码如下表所示。
04H 05H 06H 07H 08H 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 开始的连续单元中。