0
点赞
收藏
分享

微信扫一扫

通过实验理解汇编



实验课题



汇编程序实验





掌握汇编程序调试。

分析程序功能。





















ORG 0000H //一条汇编伪指令,程序从这里开始。

AJMP MAIN//程序跳转到主程序

ORG 0030H//从这里开始直到下一个ORG指令前的程序语句都顺序放在它指定的地址里

MAIN://主程序入口

    MOV SP,#60H//设置堆栈的长度为60H byte

    MOV A,#0H//将0H立即数送入累加器A

    MOV R1,#30H//将30H立即数送入寄存器R1

    MOV R7,#30H //将30H立即数送入寄存器R7

LOOP1: //循环控制指令

    MOV @R1,A //将A里的内容传给寄存器R1 作为R1的地址

    INC R1   //将R1内容自加1

    DJNZ R7,LOOP1 //R7减1不为0时转到LOOP1标号处继续循环

    NOP  //空操作指令,占用一个机器周期

    MOV R1,#30H //将30H立即数传给R1寄存器

    MOV R7,#10H //将10H立即数传给R7寄存器

LOOP: //循环控制指令

    MOV @R1,A //将累加器A里的内容传给R1作为R1的地址

    INC R1 //将R1的内容自加1

    INC A  //将A的内容自加1

    DJNZ R7,LOOP //R7减1不为0时转到LOOP处继续循环

    SJMP $ //自循环,等待中断程序

END  //结束






















通过实验理解汇编_单片机

通过实验理解汇编_嵌入式_02

通过实验理解汇编_汇编_03

通过实验理解汇编_编程语言_04

通过实验理解汇编_编程语言_05


通过对原程序进行调试,可以看到,通过MOV指令,将r1和R7进行赋值操作,在第1个循环loop1中寄存器r1和r7在不断的变化,其中寄存器r1多次自加1,r7多次自减1, 当寄存器R7自减1逐渐减到零时结束循环,当跳转到第2个loop循环中,累加器a进行自加1,同时可以看到d:30H地址段中的数据在不断变化,最终运行到SJMP $,这时不断的进行,自循环等待中断程序,如果中断程序运行完了,然后返回来继续运行,等待另一个中断程序。





源程序通过两个循环,将累加器和寄存器中的值进行互相传递,同时在d30H的地址段中进行显示加1的过程,通过这次实验调试汇编程序,观察运行的情况,对汇编指令有了更深刻的理解,对程序的执行次序顺序,有了清晰的认识。















举报

相关推荐

0 条评论