微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > keil程序

keil程序

时间:10-02 整理:3721RD 点击:
org 0000h
ajmp main
org 0100h
main:
    mov dptr,#1000h
        clr a
        movc a,@a+dptr
        mov 40h,a
        inc dptr
        clr a
        movc a,@a+dptr
        mov 41h,a
        add a,40h
        mov r0,#90h
        mov @r0,a
        mov a,41h
        subb a,40h
        mov dptr,#2000h
        movx @dptr,a
        ajmp $
org 1000h
             db 34h,56h
                         end
谁能教教我啊啊

你用C语音多省事啊

请问你是什么意思?问的是这个程序实现什么功能么?请告知。

;注:ROM中地址为Addr的字节用ROM:Addr表示,RAM中地址为Addr的字节用RAM:Addr表示
org 0000h     ;在0000H处放置代码
ajmp main     ;跳转到主程序
org 0100h    ;此行直接忽略
main:           ;主程序开始
;Part1:
    mov dptr,#1000h     ;让DPTR指向ROM:1000H
        clr a                    ;清除ACC中的内容,即ACC = 0
        movc a,@a+dptr  ;取出ROM:(1000H + 0H),即ROM:1000H中的数据,存入ACC中
        mov 40h,a          ;将之前读取的数据存入RAM:40H中
;Part2:
        inc dptr              ;DPTR加1,即DPTR = 1001H
        clr a                   ;清除ACC中的内容,即ACC = 0
        movc a,@a+dptr ;取出ROM:(1001H + 0H),即ROM:1001H中的数据,存入ACC中
        mov 41h,a         ;将之前读取的数据存入RAM:41H中
        ;这段代码的功能是,将ROM:1000H中的数据读入RAM:40H中,将ROM:1001H中的数据读入RAM:41H中
;--------------------------------------------------------------------------------------------------------------------
;Part3:
        add a,40h         ;将ACC,即从ROM:1001H中读取的数据与RAM:40H中的数据相加,运算结果放在ACC中。
        mov r0,#90h    ;给R0赋值90H
        mov @r0,a       ;将加法运算结果存入RAM:90H中
;Part4:
        mov a,41h       ;取出RAM:41H中的数据(即从ROM:1001H中读入的数据)
        subb a,40h      ;将之前取出的数据与RAM:40H中的数据进行加法运算,运算结果放在ACC中。
        mov dptr,#2000h   ;让DPTR指向ROM:2000H
        movx @dptr,a  ;这一句应该是把减法运算的结果存入外部RAM中地址为2000H的字节中(下用ExRAM:2000H表示这一字节)
        ajmp $    ;程序结束
;下面两行是定义数据段,ROM:1000H的数据为34H,ROM:1001H的数据为56H.
org 1000h
        db 34h,56h
        end      ;代码结束
分析:
      Part1的执行过程是把ROM:1000H中的数据(即34H),读入RAM:40H中,所以执行后,RAM:40H = #34H,
同理Part2的执行过程是把ROM:1001H中的数据(即56H),读入RAM:41H中,所以执行后,RAM:41H = #56H.
在分割线下面的Part3中,指令的功能是将,RAM:40H(#34H)与RAM:41H(#56H)中的数据求和,并存入RAM:90H中,执行后RAM:90H = #8AH,因为执行Part2在最后一条指令后,ACC与RAM:41H是相等的,所以没有MOV A,41H。在Part4中,指令的功能是将RAM:41H(#56H)与RAM:40H(#34H)相减,并存入ExRAM:2000H中,执行后ExRAM:2000H = #22H。

这一大堆你想说明什么~

你这是汇编

大牛啊,,,讲解的如此细致,,,

哈哈哈

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top