國際慣例,HelloWorld。windows
這個程序是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
而後改寫了其中的兩個數相加的樣例。這是從控制檯輸入,可是隻能輸入一位。多位數相加正在學習中。spa
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