【汇编语言】新手第一步——HelloWorld & A+B
国际惯例,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:',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