网站首页  |  业界新闻  |  技术文章  |  视频教程  |  下载频道  |  程序源码  |  个人空间  |  编程论坛
 
学习型 ASP/PHP/ASP.NET 主机 30元/年 全能 ASP/PHP/ASP.NET 主机,支持月付 专业 MSSQL 数据库空间,支持月付 专业 MySQL 数据库空间,支持月付
发新话题
打印

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

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

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

老师让我们每行都要写注释,我们都没学过汇编,请高手指点,谢谢!

TOP

我只知道是ARM CPU
我的阿根廷队何时涅磐啊,唉......

TOP

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不懂
我的阿根廷队何时涅磐啊,唉......

TOP

回复 3# 的帖子

谢谢啊~我也不知道是不是什么ARM的.但是这个代码好像是排序的啊.是不是啊

TOP

发新话题