当前位置:首页 > 指令系统及汇编语言程序设计
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中。
共分享92篇相关文档