最近对汇编语言非常入迷,于是开始了汇编的旅程。
博客上不知道搞些什么东西,所以就将自己写的一
些初级代码传上来了,初学者摆弄一下这些最基本
的程序还是可以的。
;-------------------------------------------
;最经典的 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# …… 一大堆的确很烦人,你说呢
评论