程序设计题 12道.doc

上传人:博****1 文档编号:549330915 上传时间:2023-12-27 格式:DOC 页数:7 大小:45.01KB
返回 下载 相关 举报
程序设计题 12道.doc_第1页
第1页 / 共7页
程序设计题 12道.doc_第2页
第2页 / 共7页
程序设计题 12道.doc_第3页
第3页 / 共7页
程序设计题 12道.doc_第4页
第4页 / 共7页
程序设计题 12道.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《程序设计题 12道.doc》由会员分享,可在线阅读,更多相关《程序设计题 12道.doc(7页珍藏版)》请在金锄头文库上搜索。

1、1 试用查表指令MOVC A ,A+DPTR查找120的平方数,已知自变量在累加器A中,查找的平方高位数在寄存器R6中,平方低位数在寄存器R7中。为了方便程序调试验证和阅读、修改,表中的平方数用压缩BCD码表示。 2 解: ORG 0000H LJMP CHABIAO ORG 0040HCHABIAO: DEC ARL AMOV R6,AMOV DPTR,#TAB1MOVC A,A+DPTRXCH A,R6INC AMOVC A,A+DPTRMOV R7,ASJMP $TAB1: DW 1H,4H,9H,16H,25H,36H,49H,64H,81H,100H DW 121H,144H,169

2、H,196H,225H,256H,289H,324H,361H,400H END2. 试用查表指令MOVC A ,A+PC查找120的平方数,已知自变量在累加器A中,查找的平方高位数在寄存器R6中,平方低位数在寄存器R7中。为了方便程序调试验证和阅读、修改,表中的平方数用压缩BCD码表示。 解: ORG 0000H LJMP CHABIAO ORG 0040HCHABIAO: DEC ARL AMOV R6,AADD A,#08HMOVC A,A+PCXCH A,R6INC AADD A,#03HMOVC A,A+PCMOV R7,ASJMP $TAB2: DW 1H,4H,9H,16H,25

3、H,36H,49H,64H,81H,100H DW 121H,144H,169H,196H,225H,256H,289H,324H,361H,400H END3. 试用循环程序设计方法编程实现双字节无符号数乘法。已知被乘数在寄存器R6R7中,乘数在寄存器R4R5中,乘积存放在寄存器R2R3R4R5中。 解:该程序采用部分积R2R3与乘数R4R5共同右移,循环17次,用R1存放循环次数。ORG 0000HLJMP MUL16ORG 1000HMUL16: CLR AMOV R2,AMOV R3,AMOV R1,#17CLR CLOOP: MOV A,R2RRC AMOV R2,AMOV A,R3

4、RRC AMOV R3,AMOV A,R4RRC AMOV R4,AMOV A,R5RRC AMOV R5,AJNC NEXTMOV A,R3ADD A,R7MOV R3,AMOV A,R2ADDC A,R6MOV R2,ANEXT: DJNZ R1,LOOPSJMP $END4. 试编写将双字节二进制数转换成压缩的BCD码的子程序。 入口:(R2R3)为双字节十六进制数,高字节在R2中; 出口:(R4R5R6)为转换后的压缩BCD码,高字节在R4中。 解:该程序采用循环程序设计方法进行编程,循环16次,用R7存放循环次数。 BBCD: CLR AMOV R4,AMOV R5,AMOV R6,

5、AMOV R7,#16LOOP: CLR CMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,LOOPRET5. 设从片内数据存储器30H单元开始存有10H个无符号数据,试求出数据块中最大的数,并存入40H单元。 解:该程序采用循环程序设计方法进行编程,地址指针采用R0,循环16次,用R7存放循环次数,并采用R2作暂存器。BLOCK DATA 30HLEN EQU 10HO

6、RG 0000HLJMP MAINORG 0040HMAIN: MOV R0,#BLOCKMOV R7,#LENDEC R7MOV A,R0LOOP: INC R0MOV R2,ACLR CSUBB A,R0MOV A,R2JNC NEXTMOV A,R0NEXT: DJNZ R7,LOOP INC R0 MOV R0,ASJMP $ END6. 设从片内数据存储器30H单元开始存有10H个无符号数据,试求出数据块中最小的数,并存入40H单元。 11040006解:该程序采用循环程序设计方法进行编程,地址指针采用R0,循环16次,用R7存放循环次数,并采用R2作暂存器。BLOCK DATA 3

7、0HLEN EQU 10HORG 0000HLJMP MAINORG 0040HMAIN: MOV R0,#BLOCKMOV R7,#LENDEC R7MOV A,R0LOOP: INC R0MOV R2,ACLR CSUBB A,R0MOV A,R2JC NEXTMOV A,R0NEXT: DJNZ R7,LOOP INC R0 MOV R0,ASJMP $ END7. 将内RAM 20H单元中的8位无符号数转换成3位压缩BCD码,并将百位数存放到30H单元中,、十位和个位存放到31H单元中。 解:地址指针采用R0。 ORG 0000HLJMP B_BCDORG 0040HB_BCD: MO

8、V R0,#30HMOV A,20HMOV B,#100DIV ABMOV R0,AINC R0MOV A,#10XCH A,BDIV ABSWAP AADD A,BMOV R0,ASJMP $END8. 将内部RAM 30H 单元中存放的两位压缩BCD码拆开,十位数存放在40H单元,个位数存放在41H单元,并求它们的乘积,结果存放在42H单元。 解: ORG 0000HLJMP MAINORG 0040HMAIN:MOV A,30HMOV B,#10HDIV ABMOV 40H,AMOV 41H,BMUL ABMOV B,#10DIV ABSWAP AADD A,BMOV 42H,ASJMP

9、 $END9试编写程序统计从片内RAM的20H单元起16个单元中所存放的“0”的个数,并存于30H单元中。 解:该程序采用双重循环程序设计方法进行编程,外循环16次,用R7存放循环次数;内循环8次,用R6存放循环次数;地址指针采用R0;统计“0”的个数的寄存器采用R2。 ORG 0000HLJMP MAINORG 0040HMAIN: MOV R0,#20HMOV R7,#16MOV R2,#00HLOOP1: MOV R6,#08H CLR C MOV A,R0LOOP2: RLC A JC LOOP3INC R2LOOP3: DJNZ R6,LOOP2INC R0 DJNZ R7,LOOP

10、1MOV A,R2MOV R0,ASJMP $END10试编写程序统计从片内RAM的20H单元起16个单元中所存放的“1”的个数,并存于30H单元中。 解:该程序采用双重循环程序设计方法进行编程,外循环16次,用R7存放循环次数;内循环8次,用R6存放循环次数;地址指针采用R0;统计“1”的个数的寄存器采用R2。 ORG 0000HLJMP MAINORG 0040HMAIN: MOV R0,#20HMOV R7,#16MOV R2,#00HLOOP1: MOV R6,#08H CLR C MOV A,R0LOOP2: RLC A JNC LOOP3INC R2LOOP3: DJNZ R6,L

11、OOP2INC R0 DJNZ R7,LOOP1MOV A,R2MOV R0,ASJMP $END11.设在起始地址为60H的片内数据存储区中,连续存放有16个单字节无符号数,试编程把它们从小到大进行升序排序。 解:该程序采用双重循环程序设计方法进行编程,外循环15次,用R7存放循环次数;内循环用R6存放循环次数;地址指针采用R0,并采用R2作暂存器。 ORG 0000H LJMP PAIXU ORG 1000HPAIXU: MOV R7,#16DEC R7LOOP1: MOV R0,#60HMOV A,R7MOV R6,ALOOP2: MOV A,R0INC R0MOV R2,ACLR CSUBB A,R0MOV A,R2JC NEXTXCH A,R0DEC R0MOV R0,AINC R0NEXT: DJNZ R6,LOOP2DJNZ R7,LOOP1SJMP $

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号