程序员, 不使用库你会写"HelloWorld"吗?
一直只有用C++, 之前看到一篇文章叫程序员,离开了库你还能干什么?
很有感触, 其实离了库, 我连"helloworld"都写不出来, 为了弥补此缺憾特地
开始学习汇编, 当然只是简单的了解下, 我觉着汇编这东西吧, 可以不精通不
熟悉, 但不能不懂.
以下代码摘自VisualAsm自带的例子, 使用RadAsm编译通过
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Author:
;comment: Hello, World
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
assume CS:code,SS:stack,DS:data
data segment ;数据段定义开始
NUMBER DB 'hello,world!',0AH,0DH ;被显示得字符串
data ends ;数据段定义结束
stack segment ;堆栈段定义开始
DB 40 DUP (0)
stack ENDS ;堆栈段定义结束
code segment ;代码段定义结束
start:
MOV AX,data
MOV DS,AX ;设置数据段的开始地址
LEA BX,NUMBER
MOV CX,14
re:
MOV DL,[BX]
MOV AH,2
INT 21H
INC BX
LOOP re
MOV AH,7 ;用户输入按键后运行结束
INT 21H
MOV AH,4CH ;返回dos
INT 21H
code ends
end start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Author:
;comment: Hello, World
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
assume CS:code,SS:stack,DS:data
data segment ;数据段定义开始
NUMBER DB 'hello,world!',0AH,0DH ;被显示得字符串
data ends ;数据段定义结束
stack segment ;堆栈段定义开始
DB 40 DUP (0)
stack ENDS ;堆栈段定义结束
code segment ;代码段定义结束
start:
MOV AX,data
MOV DS,AX ;设置数据段的开始地址
LEA BX,NUMBER
MOV CX,14
re:
MOV DL,[BX]
MOV AH,2
INT 21H
INC BX
LOOP re
MOV AH,7 ;用户输入按键后运行结束
INT 21H
MOV AH,4CH ;返回dos
INT 21H
code ends
end start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
运行一下, 很酷, 把妹利器!!!