汇编语言新手第一步——HelloWorld & A+B

汇编语言新手第一步——HelloWorld & A+B

国际惯例,HelloWorld。

这个程序是masm for windows里面的样例程序。按照我自己的理解,对其加上了注释。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
;完整段的Hello World程序
DATAS SEGMENT
STRING DB 'Hello World!',13,10,'$'
;定义了一个字符串,标号是STRING,其值是字符串首字符的地址。
;DB表示的是字符串中每个字符的都是一个字节,每往后加1的时候,地址偏移量加1.
;13 CR 回车
;10 LF 换行
;$作为字符串的结束符
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS

START:
MOV AX,DATAS
MOV DS,AX

LEA DX,STRING;LEA 获取偏移量,并将其存入DX

MOV AH,9
INT 21H ;INT 21H是DOS中断的调用,其执行的操作根据AH里面的值来确定。
;9,表示的是输出字符串,其地址为DS:DX
;4CH带返回码结束
MOV AH,4CH
INT 21H
CODES ENDS
END START

然后改写了其中的两个数相加的样例。这是从控制台输入,但是只能输入一位。多位数相加正在学习中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
DATAS SEGMENT
;此处输入数据段代码
TIP1 DB 'PLEASE INPUT A:',13,10,'$'
TIP2 DB 13,10,'PLEASE INPUT B:',13,10,'$'
TIP3 DB 13,10,'A + B = $'
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;TIP ONE
LEA DX,TIP1
MOV AH,09
INT 21H
;GET A
MOV AH,01
INT 21H
SUB AL,30H
MOV CL,AL
;TIP TWO
LEA DX,TIP2
MOV AH,09H
INT 21H
;GET B
MOV AH,01
INT 21H
SUB AL,30H
ADD CL,AL
ADD CL,30H
;TIP 3
LEA DX,TIP3
MOV AH,09
INT 21H

;RESULT
MOV DL,CL
MOV AH,02
INT 21H
;TAO LU
MOV AH,4CH
INT 21H
CODES ENDS
END START

汇编语言新手第一步——HelloWorld & A+B

https://eucham.me/2016/12/18/e18a94d8b0fa.html

作者

遇寻

发布于

2016-12-18

更新于

2022-04-21

许可协议

评论