微机原理与接口技术实验报告
实验 汇编实验
专业: 电力系统自动化 班级: 电力1203
学号: 201201000911 姓名: 李国杰
预习报告成绩 实验成绩:
机位号:
试验一:数据块传送
1. 将数据段中2000H单元开始存放的的10个数(8位数)传送到3000H开始的10个字节中。
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 2000H
DATA1 DB 1,2,3,4,5,6,7,8,9,10
ORG 3000H
DATA2 DB 10 DUP(0)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV SI,2000H
MOV DI,3000H
MOV CX,10
NEXT:MOV AL,[SI]
MOV [DI],AL
INC DI
INC SI
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
2. 将数据段中2000H单元开始存放的10个数(16位数)传送到3000H开始到的10个字节中。源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 2000H
DATA1 DW 1,2,3,4,5,6,7,8,9,10
ORG 3000H
DATA2 DW 10 DUP(0)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV SI,2000H
MOV DI,3000H
MOV CX,10
NEXT:MOV AL,[SI]
MOV [DI],AL
INC DI
INC SI
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
3. 将数据DATA1中的10个字节数据传送到数据段DATA2中源程序:
DATAS SEGMENT
;此处输入数据段代码
DATA1 DB 1,2,3,4,5,6,7,8,9,10
DATA2 DB 10 DUP(0)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV SI,OFFSET DATA1
MOV DI,OFFSET DATA2
MOV CX,10
NEXT:MOV AL,[SI]
MOV [DI],AL
INC DI
INC SI
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
4. 将数据段中2000H开始的20个数据传送到2010H开始的20个单元中。
源程序:
DATAS SEGMENT
;此处输入数据段代码
DATA1 DB 1,2,3,4,5,6,7,8,9,10
DATA2 DB 10 DUP(0)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV SI,OFFSET DATA1
MOV DI,OFFSET DATA2
MOV CX,10
NEXT:MOV AL,[SI]
MOV [DI],AL
INC DI
INC SI
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
实验二:查表
实验目的:熟悉实验环境;熟练掌握查表程序
1. 已知0~15的平方值表,查表求X的平方值,送到Y单元,用两种方法方法一:源程序:
DATAS SEGMENT
;此处输入数据段代码
TABLE DB 0,1,4,9,16,25,36,49,64,81
DB 100,121,144,169,196,225
DATA DB 4
RESULT DB ?
DATAS ENDS
STACKS SEGMENT PARA STACK
;此处输入堆栈段代码
DW 50 DUP (0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV AX,STACKS
MOV SS,AX
MOV BX,OFFSET TABLE
MOV AH,0
MOV AL,DATA
ADD BX,AX
MOV AL,[BX]
MOV RESULT,AL
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
方法二:
源程序:
结果展示:
2. 已知0~255的平方值表,查表求X的平方值,送到Y单元源程序:
DATAS SEGMENT
;此处输入数据段代码
TABLE DW 0,1,4,9,16,25,36,49,64,81
DW 100,121,144,169,196,225
DATA DW 4
RESULT DW ?
DATAS ENDS
STACKS SEGMENT PARA STACK
;此处输入堆栈段代码
DW 50 DUP (0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV AX,STACKS
MOV SS,AX
MOV BX,OFFSET TABLE
MOV AX,DATA
SHL AX,1
ADD BX,AX
MOV AX,[BX]
MOV RESULT,AX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
实验三:计算
1. 计算1234F000H+98765000H的和
DATAS SEGMENT
;此处输入数据段代码
DATA1 DW 0F000H,1234H
DATA2 DW 5000h,9876H
RESULT DW 2 DUP(?)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV AX,DATA1
ADD AX,DATA2
MOV BX,DATA1+2
ADC BX,DATA2+2
MOV RESULT,AX
MOV RESULT+2,BX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
2. 计算8字节数据1122334455667788H与 99AABBCCDDEEFF00H的和
源程序:
DATAS SEGMENT
;此处输入数据段代码
DATA1 DW 7788H,5566H,3344H,1122H
DATA2 DW 0FF00H,0DDEEH,0BBCCH,99AAH
RESULT DW 4 DUP(?)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV AX,DATA1
ADD AX,DATA2
MOV BX,DATA1+2
ADC BX,DATA2+2
MOV CX,DATA1+4
ADC CX,DATA2+4
MOV DX,DATA1+6
ADC DX,DATA2+6
MOV RESULT,AX
MOV RESULT+2,BX
MOV RESULT+4,CX
MOV RESULT+6,DX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
3. 计算8字节的BCD码十进制数1122334455667788H与9988776655443322H的和
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 1000H
DATA1 DB 88H,77H,66H,55H,44H,33H,22H,11H
DATA2 DB 22H,33H,44H,55H,66H,77H,88H,99H
ORG 3000H
DATA3 DB 0H
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,DATA1
LEA DI,DATA2
LEA BX,DATA3
MOV CX,8
NEXT:MOV AL,[SI]
ADC AL,[DI]
DAA
MOV [BX],AL
INC SI
INC DI
INC BX
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
4. 计算10个字节数据的和
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 1000H
DATA1 DB 99H,88H,77H,66H,55H,44H,33H,22H,11H,00H
DATA2 DB 00H,11H,22H,33H,44H,55H,66H,77H,88H,99H
ORG 3000H
DATA3 DB 0H
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,DATA1
LEA DI,DATA2
LEA BX,DATA3
MOV CX,10
NEXT:MOV AL,[SI]
ADC AL,[DI]
MOV [BX],AL
INC SI
INC DI
INC BX
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
5. 计算10个字数据的和
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 2000H
DATA1 DB 20 DUP(0)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,DATA1
MOV AL,0
MOV BL,1
MOV CL,10
NEXT:ADD AL,BL
INC BL
DEC CL
JNZ NEXT
MOV [SI],AL
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
实验四:计算表达式的值
1. 计算表达式Z=((X-Y)*7)/(Y+2)的值,已知X=10,Y=5
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 2000H
X DW 10
Y DW 5
Z DW ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV DX,X
SUB DX,Y ;DX=X-Y
MOV AX,7
MUL DX ;AX=(X-Y)*7
ADD Y,2 ;Y=Y+2
DIV Y
MOV Z,AX
SUB Y,2
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
实验五:找最大数,最小数
1. 找最大、最小数1 找出2040H单元和2041H单元的大数,送2042H单元(数据自己定义)
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 2040H
DATA1 DB 1,2
DATA2 DB 10 DUP(0)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV BX,2040H
MOV AL,[BX]
INC BX
CMP AL,[BX]
JAE NEXT
MOV AL,[BX]
NEXT:MOV BX,2042H
MOV [BX],AL
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
2. 找出10个数(8位数)里的最大数(数据自己定义)
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 2000H
DATA1 DB 1,2,3,4,5,6,7,8,9,10
MAX DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV BX,2000H
MOV AL,[BX]
MOV CX,10
NEXT1:INC BX
CMP AL,[BX]
JAE NEXT2
MOV AL,[BX]
NEXT2:DEC CX
JNZ NEXT1
MOV [BX],AL
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
3. 找出10个数(8位数)里的最小数(数据自己定义)
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 2000H
DATA1 DB 1,2,3,4,5,6,7,8,9,10
MAX DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV BX,2000H
MOV AL,[BX]
MOV CX,9
NEXT1:INC BX
CMP AL,[BX]
JBE NEXT2
MOV AL,[BX]
NEXT2:DEC CX
JNZ NEXT1
MOV MAX,AL
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
4. 找出10个数(16位数)里的最大数(数据自己定义)
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 2000H
DATA1 DW 1,2,3,4,5,6,7,8,9,10
MAX DW ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV BX,2000H
MOV AX,[BX]
MOV CX,9
NEXT1:INC BX
INC BX
CMP AX,[BX]
JAE NEXT2
MOV AX,[BX]
NEXT2:DEC CX
JNZ NEXT1
MOV MAX,AX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
5. 找出10个数(16位数)里的最小数(数据自己定义)
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 2000H
DATA1 DW 1,2,3,4,5,6,7,8,9,10
MAX DW ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV BX,2000H
MOV AX,[BX]
MOV CX,9
NEXT1:INC BX
INC BX
CMP AX,[BX]
JBE NEXT2
MOV AX,[BX]
NEXT2:DEC CX
JNZ NEXT1
MOV MAX,AX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
实验六:统计正数、负数个数
1. 找出10个数(8位数)里的正数个数(数据自己定义)
源程序:
DATAS SEGMENT
;此处输入数据段代码
TABLE DB 1,-2,3,-4,5,-6,7,-8,9,-10
NUM DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,TABLE
MOV DX,0H
MOV CX,0AH
AGAIN:
MOV AL,[SI]
INC SI
MOV BX,0
CMP AL,BL
JG NEXT
INC DX
NEXT:
DEC CX
JNZ AGAIN
LEA SI,NUM
MOV [SI],DX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
2. 找出10个数(8位数)里的负数个数(数据自己定义)
源程序:
DATAS SEGMENT
;此处输入数据段代码
TABLE DB 1,-2,3,-4,5,-6,7,-8,9,-10
NUM DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,TABLE
MOV DX,0H
MOV CX,0AH
AGAIN:
MOV AL,[SI]
INC SI
MOV BX,0
CMP BL,AL
JG NEXT
INC DX
NEXT:
DEC CX
JNZ AGAIN
LEA SI,NUM
MOV [SI],DX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
3. 找出10个数(16位数)里的正数个数(数据自己定义)
源程序:
DATAS SEGMENT
;此处输入数据段代码
TABLE DW 1,-2,3,-4,5,-6,7,-8,9,-10
NUM DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,TABLE
MOV DX,0H
MOV CX,0AH
AGAIN:
MOV AX,[SI]
INC SI
MOV BX,0
CMP BX,AX
JG NEXT
INC DX
NEXT:
DEC CX
JNZ AGAIN
LEA SI,NUM
MOV [SI],DX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
4. 找出10个数(16位数)里的负数个数(数据自己定义)
源程序:
DATAS SEGMENT
;此处输入数据段代码
TABLE DW 1,-2,3,-4,5,-6,7,-8,9,-10
NUM DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,TABLE
MOV DX,0H
MOV CX,0AH
AGAIN:
MOV AX,[SI]
INC SI
MOV BX,0
CMP AX,BX
JG NEXT
INC DX
NEXT:
DEC CX
JNZ AGAIN
LEA SI,NUM
MOV [SI],DX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
实验七:
1. 比较数据段DS与数据段ES中的10个字节的数据是否一致?
源程序:
DATAS SEGMENT
;此处输入数据段代码
DATA1 DB 0,1,2,3,4,5,6,7,8,9
DATA2 DB 0,1,2,3,4,5,6,7,8,9
RESULT DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,DATA1
LEA DI,DATA2
MOV CX,0AH
MOV DX,1H
NEXT:
MOV AX,[SI]
MOV BX,[DI]
CMP AX,BX
JZ AGAIN
MOV DX,0
AGAIN:
INC SI
INC DI
DEC CX
JNZ NEXT
LEA SI,RESULT
MOV [SI],DX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
2. 比较数据段DS与数据段ES中的10个字节的数据是否一致?
源程序:
DATAS SEGMENT
;此处输入数据段代码
DATA1 DW 0,1,2,3,4,5,6,7,8,9
DATA2 DW 0,1,2,3,4,5,6,7,8,9
RESULT DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,DATA1
LEA DI,DATA2
MOV CX,0AH
MOV DX,1H
NEXT:
MOV AX,[SI]
MOV BX,[DI]
CMP AX,BX
JZ AGAIN
MOV DX,0
AGAIN:
INC SI
INC DI
DEC CX
JNZ NEXT
LEA SI,RESULT
MOV [SI],DX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
实验八:逻辑运算与移位
1. 将数据段中4000H单元的内容拆开,高位送4001H低位,低位送4002H低位,4001H、4002H的高位清零,一般用于把数据送显示缓冲区时使用。
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 4000H
DATA DB 89H
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV SI,4000H
MOV AL,[SI]
AND AL,0FH
MOV [SI+2],AL
MOV BL,[SI]
SUB BL,AL
MOV CL,4
SHR BL,CL
MOV [SI+1],BL
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
2. 将4000H、4001H单元的低位送4002H单元的高、低位,一般用于将缓冲区的数据取出拼成一个字节。
源程序:
DATAS SEGMENT
;此处输入数据段代码
ORG 4000H
DATA DB 89H,67H
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV SI,4000H
MOV AL,[SI]
AND AL,0FH
MOV CL,4
SHL AL,CL
MOV BL,[SI+1]
AND BL,0FH
ADD AL,BL
MOV [SI+2],AL
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
实验九:输入输出
1、 在显示器上输出字符串‘HELLO!’
源程序:
DATAS SEGMENT
;此处输入数据段代码
STRING DB 'HELLO!'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA BX,STRING
MOV CX,6
LPP:
MOV AH,2
MOV DL,[BX]
INC BX
INT 21H
LOOP LPP
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
2、 从键盘输入一组字符串,存入到BUFFER数据区(自己定义)中。
源程序:
DATAS SEGMENT
;此处输入数据段代码
STRING DB 10,0,10 DUP(?)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA DX,STRING
MOV AH,0AH
INT 21H
MOV CL,STRING+1
XOR CH,CH
MOV BX,DX
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
3、 将内存单元存放的BCD码25H在显示器上输出(即输出字符’25’)。
源程序:
DATAS SEGMENT
;此处输入数据段代码
DATA DB 25H
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA BX,DATA
MOV AL,[BX]
AND AL,0FH
ADD AL,30H
MOV [BX+2],AL
MOV AL,[BX]
AND AL,0F0H
MOV CL,4
SHR AL,CL
ADD AL,30H
MOV [BX+1],AL
MOV CX,2
LPP:
MOV AH,2
MOV DL,[BX+1]
INC BX
INT 21H
LOOP LPP
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
4、 将内存单元存放的十进制数25从显示器上输出((即输出字符’25’)。
源程序:
DATAS SEGMENT
;此处输入数据段代码
DATA DB 25
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA BX,DATA
MOV AX,[BX]
MOV DL,0AH
DIV DL
ADD AL,30H
ADD AH,30H
MOV [BX+1],AL
MOV [BX+2],AH
LPP:
MOV AH,2
MOV DL,[BX+1]
INC BX
INT 21H
LOOP LPP
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
5、 从键盘输入10个个位数字(0~9之间的任意数字),并存储到数据区INPUT中。
源程序:
DATAS SEGMENT
;此处输入数据段代码
INPUT DB 10 DUP(?)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA BX,INPUT
MOV CX,0AH
NEXT:
MOV AH,1H
INT 21H
SUB AL,30H
MOV [BX],AL
INC BX
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
6、 将数据段中的10个个位数数据从显示器上输出。
源程序:
DATAS SEGMENT
;此处输入数据段代码
INPUT DB 0,1,2,3,4,5,6,7,8,9
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA BX,INPUT
MOV CX,0AH
NEXT:
MOV AL,[BX]
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
INC BX
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
7、 输入任意个字符存到BUFFER数据区(自己定义),输入时以回车作为结束标志。
源程序:
DATAS SEGMENT
;此处输入数据段代码
BUFFER DB 100,0,100 DUP(?)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
NEXT:
LEA BX,BUFFER
MOV AH,0AH
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果展示:
实验十、子程序
编写8位数求和子程序,并调用它完成10个数的求和程序
源程序:
DATAS SEGMENT
;此处输入数据段代码
DATA DB 0,1,2,3,4,5,6,7,8,9
RESULT DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,DATA
MOV AL,[SI]
MOV CX,0AH
NEXT:
INC SI
MOV BL,[SI]
CALL FAR PTR SUM
DEC CX
JNZ NEXT
LEA DI,RESULT
MOV [DI],AL
MOV AH,4CH
INT 21H
SUM PROC NEAR
ADD AL,BL
RET
SUM ENDP
CODES ENDS
END START
结果展示:
本文来源:https://www.2haoxitong.net/k/doc/02c52cf5a26925c52dc5bf06.html
文档为doc格式