概述
DOS系统功能调用常见表:
AH 功能 调用参数 返回参数
01 待回显的键盘输入 AL=输入字符
02 输入一个字符 AL=带输入的ASCII值
09 字符串输出 DS:DX=字符串首
汇编语句解析
ONE DB 5 DUP(1): 表示定义5个byte,每个byte为1,共5个字节(相当于给ONE变量分配5个字节的储存单元,实际上是在缓冲区)
THREE DW 5 DUP(1): 表示定义5个word,每个word为1,共5word即10个字节(相当与给THREE变量分配10个储存单元)
LOOP NEXT:CX <--CX-1; 若CX不等于0,执行NEXT,也就是循环进行
DB 100 DUP(?): 表示在系统中抽出100个字节的储存单位,供程序使用
输出字符串”hello World”
DATA SEGMENT
STRING DB 'Hello World!$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATA
MOV DS,AX
LEA DX,STRING
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
求两个数的和
DATA SEGMENT
FIVE DB 5
DATA ENDS
STACK SEGMENT
DB 128 DUP (?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATA
MOV DS,AX
MOV AL,FIVE
ADD AL,3
ADD AL,30H // 要将十进制数转换长ASCII的数才能显示在屏幕上
MOV DL,AL
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
俩个数的比较实验
DATA SEGMENT
X DB 01H
Y DB 01H
STR1 DB 'X > Y$'
STR2 DB 'X < Y$'
STR3 DB 'X = Y$'
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA, CS:CODE
START: MOV DX, DATA
MOV DS, DX
MOV AL, X
CMP AL, Y
JA TAG1
CMP AL, Y
JB TAG2
JMP TAG3
TAG1: LEA DX, STR1
MOV AH, 09H
INT 21H
JMP EXIT
TAG2: LEA DX, STR2
MOV AH, 09H
INT 21H
JMP EXIT
TAG3: LEA DX, STR3
MOV AH, 09H
INT 21H
JMP EXIT
EXIT: MOV AH, 4CH
INT 21H
CODE ENDS
END START
求1+2+3……+100的和
DATA SEGMENT
RESULT DB 4 DUP(?) ;给首地址为RESULT的变量分配4个储存空间
;相当于C语言中的 char RESULT[4];
DATA ENDS
STACK SEGMENT STACK
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
MOV CX,100 ; 100为循环次数
MOV AX,0 ; 给累加器清零
NEXT:
ADD AX,CX
LOOP NEXT
MOV DX,0
MOV BX,0AH
DIV BX ; BX为字数据型的,所以AX/BX的商放在AX下,余数放在DX里
; 若 BX 是字节型的,则商放在AH中,余数放在AL下
ADD DL,30H
MOV RESULT[3],DL
MOV DX,0
DIV BX
ADD DL,30H
MOV RESULT[2],DL
MOV DX,0
DIV BX
ADD DL,30H
MOV RESULT[1],DL
ADD AL,30H
MOV RESULT[0],AL
MOV AH,09H
LEA DX,RESULT
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
最后
以上就是危机朋友为你收集整理的汇编基础学习和一些基本总结的全部内容,希望文章能够帮你解决汇编基础学习和一些基本总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复