通过实验理解汇编

实验课题

汇编程序实验

掌握汇编程序调试。

分析程序功能。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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  //结束

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_30787727/article/details/111652233
今日推荐