匯編語言源程序的中的語句分為兩大類:指令性語句和指示性語句
指令性就是能夠被CPU執行的語句;指示性就是不被CPU執行的指令,不能生成目標代碼,又稱為偽操作語句或偽指令。
操作數可以是寄存器或存儲器或數據段。數據段可以是常量,表達式,變量,標號。
標號代表存放一條指令的存儲單元的符號地址,后面必須加冒號。有段值,段偏移量,類型三個屬性。
表達式:
1 諸如算術運算符值類的運算:
MOV AL,8+5 等價於MOV AL,13
2 同時還有邏輯運算符,名字和指令的AND,OR,XOR等相同。
MOV AL,0AH AND 0CCH
3 關系運算符EQ NE LT LE GT GE
MOV AX,4 EQ 3 匯編指令為 MOV AX,0
關於偽指令:
1 數據定義的偽指令
常用的指令有DB,DW,DD,DQ,DT,分別代表定義變量為1,2,4,8,10個字節類型。
定義操作書的相關偽代碼如下:
DATA DB 11H,33H; 包含兩個元素的字節變量DATA
NUM DW 100*5+88
STR DB 'HELLO
數據定義的操作數 還可以是 ? ,對變量保留相應的存儲單元,但不賦予變量的值。小編在寫程序的時候 需要加引號。
2 重復操作符 DUP
DATA1 DB 20 DUP('?') ; 20代表為變量DATA1分配20個字節的存儲空間,初值為任意值,或者為 相對應的存儲單元本來的值。
關於DOS的調用:
輸入單個字符顯示:
CODE SEGMENT ASSUME CS:CODE START: MOV AH,1 INT 21H JMP START CODE ENDS END START
顯示單個字符:
CODE SEGMENT ASSUME CS:CODE START: MOV DL,'B' MOV AH,2 INT 21H CODE ENDS END START
輸入字符串:
DATA SEGMENT STRING DB 10,0,10 DUP('?') DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,STRING MOV AH,0AH INT 21H MOV CL,STRING+1 XOR CH,CH ADD DX,CX MOV BX,DX MOV BYTE PTR[BX+2],'$' MOV AH,4CH INT 21H CODE ENDS END START
顯示字符串:
DATA SEGMENT STR DB '123ABC' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA mov ds,ax lea bx,str MOV CX,6 LPP: MOV AH,2 MOV DL,[BX] INC BX INT 21H LOOP LPP MOV AH,4CH INT 21H CODE ENDS END START