您的位置:首页 > 其它

汇编hello world

2007-05-22 15:41 204 查看
看了这么多天了,终于可以写出一个,hello world 了,激动啊。


;Date:2007.05.22 


;Author:sunyonggao


;Description:在dos下显示一句话


;入口参数: ah=09H 


;ds:dx=待输出字符的地址 


;说明:待显示的字符串以’$’作为其结束标志 


data segment


    str db 'Hello,This is my first asm program',0ah,0dh,'press any key to exit',0dh,0ah,'$'


    data ends




code segment


    assume cs:code,ds:data


start:  


    mov ax,data


    mov ds,ax; 初始化数据段


    mov dx,offset str


    mov ah,09h


    int 21h; 21中断的9好功能 显示字符串   


    mov    ah,1


    int    21h


    ;调用21H中断的1号功能,将键盘输入的字符ASC码存在al寄存器


    ;用于让用户看到显示结果


    mov ah,4ch


    int 21h;程序结束,返回dos


code ends


    end start



 

几点注意事项: 

一  名字项
源程序中用下列字符来表示名字
    字母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种。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编 dos date