国际惯例,HelloWorld。
这个程序是masm for windows里面的样例程序。按照我自己的理解,对其加上了注释。
;完整段的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
然后改写了其中的两个数相加的样例。这是从控制台输入,但是只能输入一位。多位数相加正在学习中。
DATAS SEGMENT
;此处输入数据段代码
TIP1 DB 'PLEASE INPUT A:',,,'$'
TIP2 DB ,,'PLEASE INPUT B:',,,'$'
TIP3 DB ,,'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,
INT 21H
;GET A
MOV AH,
INT 21H
SUB AL,30H
MOV CL,AL
;TIP TWO
LEA DX,TIP2
MOV AH,09H
INT 21H
;GET B
MOV AH,
INT 21H
SUB AL,30H
ADD CL,AL
ADD CL,30H
;TIP 3
LEA DX,TIP3
MOV AH,
INT 21H ;RESULT
MOV DL,CL
MOV AH,
INT 21H
;TAO LU
MOV AH,4CH
INT 21H
CODES ENDS
END START