📄 main.asm
字号:
//============================================================================
//
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
//
// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
//
// The entire notice above must be reproduced on all authorized copies.
//
//============================================================================
// 工程名称: 二维数组查表
// 功能描述: 程序4.17 二维数组查表
// 文件来源: 《SPCE061单片机原理及应用技术》 第四章 程序设计
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.0(or later)
//
// 涉及的库: (a) C-Lib: (CMacro.lib);
// 组成文件:
// main.asm
// Resource.asm
// 日期: 2003-5-20(建立)
// 2003-7-24(添加版本说明及版权声明并做代码标准化)
//============================================================================
//测试主程序
.PUBLIC _main
.CODE
_main:
r1 = 1;
r2 = 3;
call F_Get_Array;
r1 = 4;
r2 = 6;
call F_Get_Array;
jmp _main;
//=================================================================================
//入口:R1 = 元素下标I(矩阵行号)
// R2 = 元素下标j(矩阵列号)
//出口:R1 = 查找到的元素
// R2 = 查找成功标志(1为查找成功,2为行号溢出,3为列号溢出)
//子程序:F_Get_Array
//=================================================================================
F_Get_Array: .PROC
r3 = [Array_Table]; //取矩阵行数
cmp r3,r1; //比较行是否出界
jbe ?row; //如果出界,则跳到行溢出处理
r4 = [Array_Table+1]; //取矩阵列数
cmp r4,r2 //比较列是否出界
jbe ?colum; //如果出界,则跳到列溢出处理
mr = r1 * r4;
r2 = r2 + r3; //计算元素地址的偏移量
r2 += Array_Table+2; //计算元素地址的绝对地址
r1 = [r2]; //取元素值
r2 = 1; //成功标示
retf;
?row:
r2 = 2; //行溢出标志
retf;
?colum:
r2 = 3; //列溢出标志
retf;
.ENDP
.CODE
Array_Table:
.DW 3,5 //定义矩阵行数为3,列数为5
.DW 1, 2, 3, 4, 5 //矩阵0行
.DW 6, 7, 8, 9, 10 //矩阵1行
.DW 11, 12, 13, 14, 15 //矩阵2行
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -