【彙編語言】新手第一步——HelloWorld & A+B

國際慣例,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
相關文章
相關標籤/搜索