当前位置: 首页 > news >正文

以实例浅析汇编语句和高级语言

1.主要区别

计算机只能识别和执行机器指令。但机器指令可读性、可移植性差。

汇编语句和机器指令具有一一对应的特性。和机器指令相比,使用汇编语言编程更容易。汇编语言使用符号名表示操作码,还可以为内存地址分配符号名(标号),由汇编器把它们翻译成机器指令和正确的数值。

用汇编语言编程,可以使用目标计算机的所有指令,而高级语言程序没有这样的能力。在高级语言中,许多目标计算机的指令和寄存器是不能访问的,有些特性也是无法利用的。用于系统编程的语言,如C语言,则同时具有高级语言和汇编语言的特点,它使用高级语言的语法,但是又能使用只有汇编语言才能使用的特性。

汇编语言和高级语言的另一个重要的区别:汇编语言只能运行在指令系统相同的系列计算机上,而高级语言程序可以运行在各种不同的计算机上。对许多应用来说,这种软件的可移植性相当重要。

2. 解决问题比较

单片机控制8个发光二极管(LED),P0口做输出口,控制 从LED1到LED8依次点亮,每次点亮一个LED,如此循环。 电路如下图所示。

汇编源程序

通过汇编源程序,能看到机器级的执行过程,对理解计算机的运行有帮助。

C51程序

#include<reg51.h>        //51单片机寄存器定义的头文件

#include <intrins.h>    //包含左移函数的头文件

void delayms(unsigned char );

void main()

{     

  P0=0xff;                   // 8个LED灯全部熄灭   

  P0= 0xfe;               //点亮LED1

  while(1)      

   {     

     delayms(250);     //调用LED灯亮灭延迟时间函数         

     P0 = _crol_(P0,1);      //循环左移1位,点亮下一个LED

   }

}

void delayms(unsigned char ms)       // 定义流水灯亮灭延迟函数

{  

   unsigned char i;     

   while(ms--)   

    {       

       for(i = 0; i < 120; i++);   

    }

}

显然,使用C51隐藏了机器实现,使开发者侧重于问题本身,开发效率高,可靠性更好,且易于推广和交流。

3. 过程

过程(procedure)是实现模块化和重用的重要机制。指把一部分程序独立出来作为一个单元,这个单元可以在多个地方被调用。

在汇编语言程序中,常用子程序(subroutine)代替过程,如上述汇编源程序中的延时子程序DELAY。在C中,过程通常称为函数,如上述C51程序中的delayms(unsigned char )函数。

当被调用的过程完成后,必须返回到调用程序的断点处。一般的方法是调用时把返回地址压入堆栈,当过程结束的时候,从栈顶弹出返回地址并送入程序计数器。


http://www.mrgr.cn/news/93023.html

相关文章:

  • CDefView::_OnFSNotify函数分析
  • Pytorch xpu环境配置 Pytorch使用Intel集成显卡
  • QT——文件IO
  • Arduino:UNO板的接口和应用
  • unity学习62,尝试做第一个小游戏项目:flappy bird
  • Spring MVC 返回数据
  • CentOS 7.9 安装 ClickHouse 文档
  • python学习第三天
  • 【Transformer优化】什么是稀疏注意力?
  • ubuntu离线安装nvidia-container-runtime
  • NUDT Paper LaTeX 模板使用
  • Solana 核心概念全解析:账户、交易、合约与租约,高流量区块链技术揭秘!
  • GitLab常用操作
  • 第二节:基于Winform框架的串口助手小项目---创建界面《C#编程》
  • HarmonyOS NEXT开发进阶(十一):应用层架构介绍
  • unity pico开发二:连接头盔,配置手柄按键事件
  • 【和春笋一起学C++】逻辑操作符和条件操作符
  • MySQL快速搭建主从复制
  • 【C++指南】一文总结C++类和对象【中】
  • Nginx1.19.2不适配OPENSSL3.0问题