上机实验报告

发布时间:2015-06-25 07:25:18   来源:文档文库   
字号:

微机原理与接口技术实验报告

实验 汇编实验

专业: 电力系统自动化 班级: 电力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码十进制数1122334455667788H9988776655443322H的和

源程序:

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=10Y=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低位,4001H4002H的高位清零,一般用于把数据送显示缓冲区时使用。

源程序:

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. 4000H4001H单元的低位送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、 将内存单元存放的BCD25H在显示器上输出(即输出字符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》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式