51单片机:用汇编语言表示分段函数
51单片机:用汇编语言表示分段函数
学习51单片机中,虽然大部分的时间都在用C语言编写代码,但是因考试需要也学了一些简单的汇编知识。初识汇编是在微机原理,那时没有好好学,现在到用的时候,真是一把辛酸泪。还好考试涉及的知识点不是那么深,简做整理了一点,暂存博客吧。
开胃小题:
用汇编语言实现如下功能:
假设X储存在RAM 30H中,而Y存储在外部RAM31H中,
当 X > 0时,Y = X + 4;
当 X = 0, Y = 0 ;
当 X < 0时,Y = -1。
//--------------------------------------------------------
// 假设X储存在RAM 30H中,而Y存储在外部RAM31H中
// Y = X + 4 X > 0
// Y = 0 X = 0
// Y = -1 X < 0
//--------------------------------------------------------MOV A,30HMOV DPTR,#31HCJNE A,#00H,D1LJMP D ;转移到D
D1:JB Acc.7,D2 ; 小于0,转移到D2,大于0继续执行ADDC A,#04H ;加4LJMP D
D2:MOV A,#81H
D:MOVX @DPTR,A ;把A写入外部RAM
来点小难度:
用汇编语言实现如下功能:
假设X储存在RAM 30H中,而Y存储在外部RAM30H中,
当 X > 0时,Y = 2X + 4;
当 X = 0 ,Y = 0 ;
当 X < 0时,Y = -1。
//--------------------------------------------------------
// 假设X储存在RAM 30H中,而Y存储在外部RAM30H中
// Y = 2X + 4 X > 0
// Y = 0 X = 0
// Y = -1 X < 0
//--------------------------------------------------------MOV A,30HMOV DPTR,#30HCJNE A,#00H,D1LJMP D ;转移到D
D1:JB Acc.7,D2 ; 小于0,转移到D2,大于0继续执行RL A ; 左移1位,实现乘2ADDC A,#04H ;+4LJMP D
D2:MOV A,#81H
D: ;完成Y写入外部存储器MOVX @DPTR,A ;把A写入外部RAM
总结一下:
像这种分段函数题目要注意分类的情况,因为题目涉及到最终结果存储到外部,所以无论结果是多少最终都要被送入外部存储器,因此单独把写入外部拿出来。这里面的一些指令都是较为常见的,可能会有问题的是关于JB Acc.7,那是一个用来判断正负的指令,暂不多谈,会在以后的指令的部分中提到。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
