【文档说明】汇编语言程序设计课件_2.ppt,共(14)页,518.001 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44784.html
以下为本文档部分文字说明:
第四章汇编语言程序设计4.1汇编语言与机器语言4.2程序设计步骤与方法4.2.1程序设计步骤一、分析问题,确定算法二、根据算法画出程序流程图三、根据流程图编写源程序。四、上机调试程序,直至实现预定的功能4.2.2编程的方法和技巧一、模块化的程序设计方法二、编程技巧在进行程序设
计时,应注意以下事项及技巧:①尽量采用循环结构和子程序。②对于通用子程序,除了用于存放子程序入口参数的寄存器外,子程序中用到的其他寄存器的内容应压入堆栈(返回前弹出)。③对于中断处理程序由于它的执行是随机的所以要保护好中断现场。4.2.3汇编语言
程序的基本结构一、顺序程序二、分支程序三、循环程序四、子程序4.2.4汇编语言源程序的汇编一、手工汇编二、机器汇编汇编语言源程序目标程序汇编(汇编程序)反汇编(反汇编程序)4.3伪指令(1)ORG汇编起始命令(
2)END汇编结束命令(3)EQU赋值命令(4)DB定义字节命令(5)DW定义字命令(6)DS定义存储空间命令(7)BIT位地址符号命令4.4MCS-51系统典型程序设计1、试编写程序将内部RAM50H~6FH单元中的无符号数按照从小
到大的次序排列,结果仍存放在原存储空间。MOVR7,#1FHBB4:MOVA,R7MOVR3,ACLRF0MOVR0,#50HBB2:MOVA,@R0MOVR6,AINCR0MOVA,@R0CLRCSUBBA,R6JNCBB1MOVA,R6XCHA,@R0DEC
R0XCHA,@R0INCR0SETBF0BB1:DJNZR3,B2JNBF0,BB3DJNZR7,BB4BB3:RET2、外部RAM4000H~401FH单元中的内容为有符号数。试编写程序将其中的正数和负数分别送到内部RAM80H和0A0H单元开始的地址,并分
别记下正数和负数的个数送60H和61H单元。MOVR7,#20HMOVDPTR,#4000HMOVR0,#80HMOVR1,#0A0HMOV60H,#00HMOV61H,#00HLOOP:MOVXA,@DPTRJBA
CC.7,NEG1MOV@R0,AINCR0INC60HSJMPNEXT1NEG1:MOV@R1,AINCR1INC61HNEXT1:INCDPTRDJNZR7,LOOPRET3、编写程序统计某班学生的数学考试成绩,已知该班有32名学生,数学考试成绩置内部RAM30
H~4FH,一个学生成绩占一个字节,求出该班的平均成绩置60H。MOVR7,#20HMOVR0,#30HMOVR2,#00HMOVR3,#00HRE:MOVA,R2ADDA,@R0MOVR2,AMOVA,R3AD
DCA,#00HMOVR3,AINCR0DJNZR7,REMOVR7,#05HRE1:CLRCMOVA,R3RRCAMOVR3,AMOVA,R2RRCAMOVR2,ADJNZR7,RE1MOV60H,R2RET4、试编写程序将30H~34
H单元中压缩的BCD码数(每个字节存放两个BCD码数)转换为ASCII码数,并将结果存放在内部RAM80H~89H单元。MOVR0,#30HCHAG:ANLA,#0FHMOVR1,#80HADDA,#30HMOVR7,#05HMOV@R1,ARE:MOVA,@R0
INCR1LCALLCHAGRETMOVA,@R0SWAPALCALLCHAGINCR0DJNZR7,RERET5、试编写程序统计外部RAM8000H~80FFH单元中出现正数、0和负数的个数,并将统计结果依次送40H、41H以及42H单元,若无数据“0”,则向内部RAM50H送00H。M
OVDPTR,#8000HZERO0:INC41HMOVR7,#00HSJMPNEXT1MOV40H,#00HNEGTIVE1:INC42HMOV41H,#00HNEXT1:DJNZR7,LOOPMOV42H,
#00HMOVA,41HLOOP:MOVXA,@DPTRJNZNEXT2INCDPTRMOV50H,#00HJZZERO0NEXT2:RETJBACC.7,NEGTIVE1INC40HSJMPNEXT16、根据给出的X值,X值存放在20H单元,查找对应的Y值
(双字节),并将结果存放在21H、22H单元。(X为规则变量)LOOKUP:MOVDPTR,#TABLEMOVA,20HRLAMOV20H,AMOVCA,@A+DPTRMOV21H,AINCDPTRMOVA,20HMOV
CA,@A+DPTRMOV22H,ARET