指令系统及汇编语言程序设计 联系客服

发布时间 : 星期六 文章指令系统及汇编语言程序设计更新完毕开始阅读32ce775032d4b14e852458fb770bf78a65293a98

58、 如果希望快速保护工作寄存器组,请写出将2区作为当前工作寄存器区的程序段。

二、读程序

1、阅读下列程序,写出程序流程图,并写出数学表达式 ORG 3000H X: EQU 20H Y: EQU 30H START: MOV A,X JNZ LP1 MOV Y,#0 SJMP ED

LP1: JNB ACC.7,LP2 MOV Y,#0FFH SJMP ED LP2: MOV A,#1 ED: SJMP ED

2、阅读下列程序,写出程序功能

ORG 2000H

STADA: EQU 20H SLANG: EQU 30H

START: MOV R0 , # STADA MOV B ,# 0 LOP1: MOVX A ,@R0

CJNE A ,#0DH ,CRNEXT

MOV SLANG , B SJMP $

CRNEXT: INC B

INC R0 SJMP LOP1

END 3、阅读下列程序,回答问题 ORG 3000H MAIN: MOV R0, #30H MOV R1, #50H

MOV R7, #0AH

ACALL BCD_SUM MOV R0, #30H MOV DPTR,#2000H MOV R7, #10H LOOP: MOV A,@R0 MOVX @DPTR, A INC R0 INC DPTR DJNZ R7,LOOP BCD_SUM: MOV A,@R0 ADD A,@R1 DA A

MOV @R0,A

INC R0 INC R1 DJNZ R7,BCD_SUM

问:1)子程序BCD_SUM完成什么功能? 2)程序MAIN完成什么功能?

4、执行下列程序后,累加器A的内容为多少?

ORG 0000H

MOV DPTR , #TABLE MOV A,#06H MOVC A,@A+DPTR SJMP $

TABLE:DB 0,1,4,9,16,25,36,49,64,81

END

三、编程序

1、 设被加数存放在内部RAM的20H(低字节)、21H、22H(高字节)单元,加数存放在30H(低

字节)、31H、32H(高字节)单元,若要求和存放在30H、31H、32H中,试编写出16位数相加的程序。

2、 将内部RAM30H单元开始的4个单元中存放的四字节十六进制数和内部RAM40H单元开始的4

个单元中存放的四字节十六进制数相减,结果存放到40H单元中。

3、 设有16位二进制数存放在R0、R1中(R0存放高位,R1存放低位),试编写实现16位二

进制数的“取反加1”操作的程序。

4、 设有16位二进制数存放在内部RAM的50H、51H单元中,要求将其算术左移一位,(最低

位移入0)后仍然放在原单元。

5、 设在内部RAM的40H单元中存放8位二进制数,要求将其转换成相应的BCD码并由高位到

低位的顺序存入内部RAM以60H为首址的3个连续单元中。

6、 设在外部RAM的60H单元存有1字节的代码,要求将其分解成两个4位字段,高4位存入

原单元的低四位,其低四位存入61H单元的低四位且要求将这两单元的高4位均为0。 7、 编写一段程序,把外部RAM中1000H~1030H的内容传送到内部RAM的30H~60H中。 8、 若80C51的晶振频率为6MHz,试计算延时子程序的延时时间。。 DELAY:MOV R7,#0F6H LP:MOV R6,#0FAH DJNZ R6,$ DJNZ R7,LP RET

9、 在内部RAM 的21H单元开始存有一组单字节不带符号数,数据长度为30H,要求找出最大

数存入BIG单元。

10、编写子程序,将R1中的2个压缩BCD码转换为ASCII码后存放在R3和R4中。