keil程序
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。
这一大堆你想说明什么~
你这是汇编
大牛啊,,,讲解的如此细致,,,
哈哈哈