看了这么多天了,终于可以写出一个,hello world 了,激动啊。



























几点注意事项:
一 名字项
源程序中用下列字符来表示名字
字母A — Z
数字0 — 9
专用字符?、·、@、一、$
注意:(1)除数字外,所有字符都可以放在源语句的第一个位置。
(2)名字中如果用到·则必须是第一个字符。
(3)可以用很多字符来说明名字,但只有前面的31个字符能被汇编程序所识别。
用途:名字项可以是标号或变量。它们都用来表示本语句的符号地址,它是可有可无的,只有当需要用符号地址来访问该语句时它才需要出现。
·标号:标号在代码段中定义,后面跟冒号:,它也可以用LABEL或EQU伪操作来定义。此外它还可以作为过程名定义。标号经常在转移指令或CALL指令的操作数字段出现,用以表示转向地址。
标号有三种属性;段、偏移及类型。
段属性:定义标号的段起始地址,此值必须在一个段寄存器中。而标号的段则总是在CS寄存器中。
偏移属性:标号的偏移地址是16位无符号数,它代表从段起始地址到定义标号的位置之间的字节数。
类型属性:用来指出该标号是在本段内引用还是在其它段中引用的。如在段内引用的,则称为NEAR,指针长度为2字节:如在段外引用,则称为FAR,指针长度为4字节。
在程序中同样的标号或变量的定义只允许出现一次,否则汇编程序会指示出错。
二 操作符
1.算术操作符有十、一、*、/和MOD。其中MOD是指除法运算后得到的余数,如19/7的商是2,而19 MOD 7则为5(余数)
算术操作符可以用于数字表达式或地址表达式中,但当它用于地址表达式时,只有当其结果有明确的物理意义时其结果才是有效的。例如两个地址相乘或相除是无意义的。
例: 如数组ARRAY定义,如下试写出把数组长度(字数)存入CX寄存器的指令。
ARRAY DW 1,2,3,4,5,6,7
ENDB DW ?
其中END是为计算数组长度而建立的符号地址,所需指令如下
MOV CX ,(ENDB—ARRAY)/2
2。关系操作符
它有EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)6种。