一直只有用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
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
运行一下, 很酷, 把妹利器!!!