注册 登录
编程论坛 汇编论坛

由于正在学单片机,之前没有接触过汇编语言,请高手帮帮解释这段代码

lavigne927 发布于 2008-03-22 13:50, 1236 次点击
DATA EQU 20H
N EQU 8
ISRT:
MOV DPTR,#LIST
MOV R0,#DATA
MOV R2,#N
CPY:
CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R2,CPY
LCALL INSSORT
STOP:
LJMP STOP
LIST:
DB 53H,87H,12H,9AH
DB 2FH,3CH,0A8H,0BCH
INSSRT:
MOV R3,#1
MOV R2,#N‐1
LOOP0:
MOV A,R3
MOV R4,A
ADD A,#DATA
MOV R0,A
DEC A
MOV R1,A
MOV B,@R0
LOOP1:
MOV A,@R1
SETB C
SUBB A,B
JC LOOP2
MOV A,@R1
MOV @R0,A
DEC R0
DEC R1
DJNZ R4,LOOP1
LOOP2:
MOV @R0,B
INC R3
DJNZ R2,LOOP0
RET

老师让我们每行都要写注释,我们都没学过汇编,请高手指点,谢谢!
3 回复
#2
zkkpkk2008-03-23 10:08
我只知道是ARM CPU
#3
zkkpkk2008-03-23 10:18
DATA EQU 20H    ;宏定义  相当于C的#define DATA 32
N EQU 8         ;宏定义  
ISRT:           ;ISRT段
MOV DPTR,#LIST  ;把LIST的段地址送入DPTR寄存器吧
MOV R0,#DATA    ;把DATA送入R0寄存器,MOV R0,20h
MOV R2,#N       ;MOV R2,8
CPY:            ;CPY段
CLR A           
MOVC A,@A+DPTR
MOV @R0,A
INC R0          ;[R0]++
INC DPTR        ;[DPTR]++
DJNZ R2,CPY     
LCALL INSSORT
STOP:
LJMP STOP
LIST:
DB 53H,87H,12H,9AH
DB 2FH,3CH,0A8H,0BCH
INSSRT:
MOV R3,#1
MOV R2,#N‐1
LOOP0:
MOV A,R3
MOV R4,A
ADD A,#DATA
MOV R0,A
DEC A
MOV R1,A
MOV B,@R0
LOOP1:
MOV A,@R1
SETB C
SUBB A,B
JC LOOP2
MOV A,@R1
MOV @R0,A
DEC R0
DEC R1
DJNZ R4,LOOP1
LOOP2:
MOV @R0,B
INC R3
DJNZ R2,LOOP0
RET

其他你自己对着看吧,我们只教8086PC机汇编和我自学过点WIN32汇编,ARM不懂
#4
lavigne9272008-03-24 19:25
回复 3# 的帖子
谢谢啊~我也不知道是不是什么ARM的.但是这个代码好像是排序的啊.是不是啊
1