正文

汇编初级代码2007-04-06 13:24:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lingdlz/24640.html

分享到:

最近对汇编语言非常入迷,于是开始了汇编的旅程。
博客上不知道搞些什么东西,所以就将自己写的一
些初级代码传上来了,初学者摆弄一下这些最基本
的程序还是可以的。

;-------------------------------------------
;最经典的 hello,world !
;-------------------------------------------
.model small   ;定义程序的存储模型
.data    ;定义数据段
hello db 'hello,world !',13,10,'$'
.code    ;定义代码段
main proc far
start: mov ax,@data ;载入数据段
 mov ds,ax

 mov dx,offset hello ;打印字符串
 mov ah,09h
 int 21h

 mov ah,4ch  ;返回DOS
 int 21h
main endp
 end start

;-----------------------------------------------
;随机数产生器,间隔一定时间产生80以内的随机数
;-----------------------------------------------
.MODEL SMALL
.DATA
OUTBUF DB 4 DUP(?)
TXT1   DB "Create Random data(below 80)2007-4-5",13,10,'$'
TXT2   DB "Input 'Q' or 'q' to exit",13,10,'$' 
ENTER  DB 13,10,'$'
.CODE
MAIN   PROC FAR   ;================主程序开始
START: MOV AX,@DATA
       MOV DS,AX
       CALL PLINE
       MOV DX,OFFSET TXT1
       MOV AH,09H
       INT 21H
       MOV DX,OFFSET TXT2
       MOV AH,09H
       INT 21H
       CALL PLINE

LOP1:  MOV SI,OFFSET OUTBUF
       MOV AH,0
       INT 1AH   ;读取时钟
       MOV AL,DL  ;毫秒
       MOV AH,0
       MOV BL,80;  ;除以80
       DIV BL
       MOV AL,AH
       MOV AH,0
       MOV BL,10
       DIV BL
       CMP AL,00H  ;是否是 0,高位的 0 去掉
       JZ  ZERO 
       ADD AL,30H
       MOV [SI],AL
       INC SI
ZERO:  ADD AH,30H 
       MOV [SI],AH
       INC SI
       MOV BYTE PTR [SI],20H ;设置空格
       INC SI
       MOV BYTE PTR [SI],'$'
       MOV DX,OFFSET OUTBUF
       MOV AH,09H  ;输出结果
       INT 21H
 
       MOV CX,500  ; 时间间隔设置
DONE1: MOV BX,0FFFFH
DONE:  DEC BX
       JNE DONE
       LOOP DONE1
    
       MOV AH,6   ;接收输入(直接控制台I/O),Q,q 退出
       MOV DL,0FFH
       INT 21H
       CMP AL,'Q'
       JE  EXIT
       CMP AL,'q'
       JE  EXIT
       JMP LOP1
EXIT:  MOV AH,4CH
       INT 21H
;打印 ----------------------------------------------
PLINE  PROC NEAR  ; ==============子程序开始
       MOV DL,2DH  ;字符'-'的ASCLL码
       MOV CX,40
PRT:   MOV AH,02H
       INT 21H
       LOOP PRT
       MOV DX,OFFSET ENTER
       MOV AH,09H
       INT 21H
       RET
PLINE  ENDP   ; ==============子程序结束

MAIN   ENDP   ; ==============主程序结束
       END START

;一下又学这个,一下又学那个,真不知道这么做对还是错,不过就是感兴趣
;也就是 汇编/C/C++ 这三门语言了。相信很多人也和我一样,不知道该学什
;么,JAVA/C++/DEPHI/C# …… 一大堆的确很烦人,你说呢

阅读(3676) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册