HLA高级汇编 进入高级汇编语言的世界 第一篇

原创 2013年12月06日 09:40:47

成败成屡败兰兰白绿回百汇

1,HLA标识符以下划线,字母开头,后面接0个或多个字母,数字字符下划线,HLA标识符是区分大小写的,HLA不能声明只存在大小写差异的两个名称。

2,hellworld程序

program helloworld;

#include("stdlib.hhf")

begin helloworld;

stdout.put("helloworld, assembly of all world",nl);

end helloword;


3,静态变量的声明:

static:

   i8:    int8             :=0;

   i16:   int16         :=1600;

   i32:   int32          :=320000;

变量的声明通常在主程序开始之前

stdput.put允许有多个参数,如果指定了一个整形值,那么在输出时候,stdout.put会把这个值转换成它的   字符串  形式

stdin.get(i8)该语句从键盘读入一个值,把他转换成 i8 的形式,存储到i8中

4,HLA使用一个字节来表示布尔值,可以使用任何可以直接操作8位值的任何指令来处理他们。

5,基本指令: mov(源,目的)它只是复制,源操作数和目的操作数长度相同。。。                                      add(源,目的)  sub(源,目的)

6,if语法

if(表达式)then   。。。。。。 elseif(表达式)then 。。。。else。。。。endif

7,布尔操作时候的&&,||,!

操作符&&采用从左到右的方式求值,,,逻辑与操作符比逻辑或的优先级高,!操作符只能做寄存器或者布尔变量的前缀:不能作为更大表达式的一部分,,想要实现时得加括号,,,HLA也提供了&和|操作符 他们和&&,|||完全不同

8,while(表达式)do。。。。。。。endwhile

循环体执行完语句后,重新在执行直到表达式为false为止

9,for(式子)do。。。。。。endfor

10,repeat。。。。。until(表达式)

如果表达式为false,则重复循环

11,break  和breakif(表达式)

12,forever。。。endfor该语句创建了一个无限循环

forever

      stdout.put("enter a interger less than 10:");

      stdin.get(i);

      breakif(i<10);

      stdout.put("this value need less to 10",nl);

     endfor;

13,try .......exception.......endtry

如果try和第一个exception之间的语句(受保护的模块)在执行过程中没有出现问题,则直接执行endtry后面的.

保护程序,不接受错误用户的输入

repeat

   mov (false,goodinteger);

   try

     stdout.put("enter a integer:");

     stdin.get(i);

     mov (true,goodeinterfer);

     exception(ex.concersionerror);

     stdout.put("illegal numeric value,please re_enter,",nl);

     exception(ex.valueoutofrange);

     stdout.put("illegal numeric value,please re_enter,",nl);

     endtry;

 until(goodinteger);

 
excepts.hhf头文件提供了很多异常处理的情况。
http://tech.163.com/06/0328/10/2D9VS3U100091SBR.html

http://blog.sina.com.cn/s/blog_6b136940010129hl.html

14,stdout.newln向标准输出设备输出一个换行序列,在功能上于stdout.put(nl);等效

15,stdout.putiX将一个参数作为带符号的整数值输出

stdout.puti8(-123);

stdout.puti16(dx);

16,stdout.putiXSIZE将指定的值作为带符号整形常量输出到标准设备,但是指定域宽,和填充字符

stdout.puti8Size(value8,width,padchar);

width为负数则左对齐,不然右对齐,padchar是一个字符值,字符常量通常用单引号括起来

使用stdout.puti32Size以表列形式输出值

    program   haha

  #include("stdlib.hhf")

   var   

     i32:   int32;

    colcnt: int8;

begin   haha ;

    mov(96,i32);

    mov (0,colcnt);

    while(i32>0)do

         if(colcnt=8) then

         stdout.newln();

         mov(0,colcnt);

         endif;  

   stdout.puti32Size(i32,5,'  ');

   sub(1,i32);

   add(1,colcnt);

   endwhile();

 stdout.newln();

end haha;

17,使用stdout.put也可以输出时候指定域宽stdout.put(i32:5);但是不能指定填充字符,默认为空格字符

18,stdin.getc()从标准输入设备的输入缓冲区读取下一个字符,他将该字符返回给cpu的al寄存器、

19,stdin.getiX,分别从标准输入设备读取8位,16位,32位的带符号整形值,并将它们返回到al,ax,eax中

20,调用stdin.getc()或者stdin.geti32()样输入历程时,程序不必从用户那里读取数据,而是HLA从从用户那里读取一整行文本,并将输入内容存入缓冲区,对于输入历程会从缓冲区读取数据,知道缓冲区为空为止。

21,hla标准库提供了stdin.readLn(),stdin.flushIuput()可以控制标准输入缓冲区。stdin.radln()表示放弃输入缓冲区的内容,直接要求用户输入一行新的文本,stdin.flushinput()表示仅仅放弃缓冲区的内容。。。。通常在标准输入历程之前,,,而在标准输入之后调用stdin.flushinput();

22,stdin.get

stdin.get(intval,anotherintval);   stdin.get将输入数据直接存储到参数列表制定的参数列表中,它并不将值返回给寄存器,除非指定了一个寄存器作为参数。stdin.get参数必须是变量或寄存器

23,try..endtry产生异常存放在eax寄存器中,于exception中的异常ID进行比较

 

 

 




高级编程语言的发展历程(机器语言、汇编语言、高级语言)

目录   高级编程语言的发展历程(一)创始纪   高级编程语言的发展历程(二)虚拟机的前世今生   高级编程语言的发展历程(三)FORTRAN 语言是怎么来的   高级编程语言的发展历程(四)...
  • u012701023
  • u012701023
  • 2015年05月31日 17:52
  • 2539

编译器如何将高级语言转化成汇编语言的?

对于每天奋斗在一线,用Java,C++,C#,Python等高级编程语言写程序的程序员们来说,理解编译器是如何将高级语言编译成汇编语言,有助于我们更好的理解计算机编程。 编译器将高级语言转化成汇...
  • Mark_LQ
  • Mark_LQ
  • 2015年03月13日 20:25
  • 2059

机器语言、汇编语言和高级语言之间的关系

看了一篇讲解高级语言、汇编语言和机器语言的博客,感觉很受益,在这里简单总结一下。 1. 机器语言 计算机执行的二进制命令,都是0和1表示的。 2. 汇编语言 具有一定意义的文字命令,与机器语言一一对应...
  • dajuan1989
  • dajuan1989
  • 2013年08月05日 15:06
  • 4487

第四章 hla 高级汇编

1,一些额外的指令:      intmul(整数乘法),,,它的目的操作数必须是寄存器,当源操作数是 常量 时候,intmul允许有3个操作数,intmul只允许有16位和32位的操作数,它不对8位...
  • dazhiliudazhi
  • dazhiliudazhi
  • 2013年12月07日 13:56
  • 427

汇编语言程序设计学习笔记(第一遍学习)第3节:HLA高级汇编语言基础尝鲜

一20日学习汇编语言的感受   学习汇编已经20天啦!我已经学习完了王爽的汇编语言书籍,并做了全部的练习与实验,觉得这是本非常好的书籍,在学习的过程中因为记录笔记非常繁琐,因为每一步都要截图加说...
  • netanimals
  • netanimals
  • 2012年08月30日 20:35
  • 2233

什么是汇编语言(二) 高级语言与汇编

作者:zenglong 添加时间:2013/8/31 22:41:34   浏览次数:620 标签:汇编语言,汇编语言教程,高级语言,汇编 前面介绍了和汇编相关的指令字节码部分,这节...
  • yandaqijian
  • yandaqijian
  • 2015年10月19日 17:55
  • 606

15 Modelica 3.2_高级用法 第一篇

  • 2014年01月25日 10:47
  • 1.14MB
  • 下载

HLA高级体系结构

  • 2012年10月06日 13:29
  • 144KB
  • 下载

高级汇编语言技术(宏汇编 条件汇编 重复汇编)

  • 2009年10月05日 08:50
  • 173KB
  • 下载

编译器如何将高级语言转成汇编语言的?

NO1 1、那个能不能在我计算机的OUTLOOK收到邮件时,通知我一声,这样我们公司的邮箱就可以实现邮件到达通知功能了,最好还能告诉我邮件标题和附件名称。 2、那个捕捉摄像头的指令能否做得功能更强...
  • weiyirong
  • weiyirong
  • 2012年05月16日 01:23
  • 3482
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HLA高级汇编 进入高级汇编语言的世界 第一篇
举报原因:
原因补充:

(最多只允许输入30个字)