微机实验报告
曾东明
实验一 输出字符‘A’
一、实验目的
1.通过这个简单的例子熟悉在微机上建立、汇编、链接和运行8086/8088汇编语言程序的过程。
2.掌握字符的显示方法。
3.学习DOS系统功能调用。
二、实验内容
输出字符‘A’,程序流程图如图1-1所示。
图1-1输出字符‘A’程序流程图
源程序如下:
CODE SEGMENT
ASSUME CS:CODE
MOV DL, ‘A’
MOV AH, 2
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END
三、实验设备
PC机一台,MASM汇编程序
四、实验步骤
1.用记事本将源程序输入,并存盘。
注意:源程序是用汇编语言语句编写的程序,并不能为机器所识别。源程序的扩展名为.ASM
2.用宏汇编程序将.ASM源程序汇编成机器码的目标文件(OBJ文件)
3.用LINK程序产生执行文件(EXE文件)
4.执行程序
实验结果:
五、心得体会
第一次经历了汇编语言的上机过程,对在计算机上进行汇编语言程序设计的步骤不是很熟悉,对命令提示符的一些操作命令不懂,后来查阅了一些资料,比如可以在window7下按住shift,点击鼠标右键,在弹出的窗口里就可以打开命令提示符了。
六、思考题
1.请说出一个完整的汇编程序从编写到运行所需的步骤。
(1)用编辑程序建立ASM源程序文件
(2)用宏汇编程序将.ASM源程序汇编成机器码的目标文件(OBJ文件)
(3)用LINK程序产生执行文件(EXE文件)
(4)在DOS命令行直接键入文件名执行该文件
2.修改源程序,改变屏幕显示的内容。
修改的源程序:
CODE SEGMENT
ASSUME CS:CODE
MOV DL, ‘D’
MOV AH, 2
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END
实验二 数据的显示实验
一、实验目的
1.掌握屏幕上显示各种进制数据的方法。
2.掌握将内存中的二进制数转换为十进制、十六进制数的方法。
3.学会子程序的编写、调用及数据传递方法。
二、实验内容
1.把BX中的无符号二进制数转换成十进制数,在屏幕上显示出来。
2.把BX中的带符号二进制数转换成十进制数,在屏幕上显示出来。
3.求一个数据块(由10个单字节的无符号数组成)中的最大元素,并将结果以十进制数的形式在屏幕上显示出来。
4.求一个数据块(由20个单字节的带符号数组成)中的正数之和(和不超过字)和负数之和(和不超过字),并在屏幕上用十进制数的形式分别显示出两个和。
5.将寄存器BX中的二进制数转换成十六进制数,并在屏幕上显示出来。从高到低依次取出4位二进制数变为ASCII码输出即可。
三、实验设备:
PC机一台、masm汇编程序
四、实验步骤:
依照前面介绍的方法,对每一个实验内容对应的程序进行编辑、编译、连接和运行,直到达到实验要求。
1.实验内容1
(1)实验内容1的流程图,如图所示:
(2)实验内容1的程序:
CODE SEGMENT
ASSUME CS: CODE
DEC_DIV MACRO
MOV AX, BX
MOV DX, 0
DIV CX
MOV BX, DX
MOV DL, AL
ADD DL, 30H
MOV AH, 2
INT 21H
ENDM
START: MOV BX, 0FFFH
MOV CX, 1000
DEC_DIV
MOV CX, 100
DEC_DIV
MOV CX, 10
DEC_DIV
MOV CX, 1
DEC_DIV
MOV AH, 4CH
INT 21H
CODE ENDS
END START
(3)实验结果:
2. 实验内容2
(1)实验容1的程序:
DATA SEGMENT
A DW 1000
B DW 100
C DW 10
D DW 1
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX, 0FFEFH ;-0017的补码是0FFEFH
2.修改源程序,改变屏幕显示的内容。
修改的源程序:
CODE SEGMENT
ASSUME CS:CODE
MOV DL, ‘D’
MOV AH, 2
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END
实验二 数据的显示实验
一、实验目的
1.掌握屏幕上显示各种进制数据的方法。
2.掌握将内存中的二进制数转换为十进制、十六进制数的方法。
3.学会子程序的编写、调用及数据传递方法。
二、实验内容
1.把BX中的无符号二进制数转换成十进制数,在屏幕上显示出来。
2.把BX中的带符号二进制数转换成十进制数,在屏幕上显示出来。
3.求一个数据块(由10个单字节的无符号数组成)中的最大元素,并将结果以十进制数的形式在屏幕上显示出来。
4.求一个数据块(由20个单字节的带符号数组成)中的正数之和(和不超过字)和负数之和(和不超过字),并在屏幕上用十进制数的形式分别显示出两个和。
5.将寄存器BX中的二进制数转换成十六进制数,并在屏幕上显示出来。从高到低依次取出4位二进制数变为ASCII码输出即可。
三、实验设备:
PC机一台、masm汇编程序
四、实验步骤:
依照前面介绍的方法,对每一个实验内容对应的程序进行编辑、编译、连接和运行,直到达到实验要求。
1.实验内容1
(1)实验内容1的流程图,如图所示:
(2)实验内容1的程序:
CODE SEGMENT
ASSUME CS: CODE
DEC_DIV MACRO
MOV AX, BX
MOV DX, 0
DIV CX
MOV BX, DX
MOV DL, AL
ADD DL, 30H
MOV AH, 2
INT 21H
ENDM
START: MOV BX, 0FFFH
MOV CX, 1000
DEC_DIV
MOV CX, 100
DEC_DIV
MOV CX, 10
DEC_DIV
MOV CX, 1
DEC_DIV
MOV AH, 4CH
INT 21H
CODE ENDS
END START
(3)实验结果:
2. 实验内容2
(1)实验容1的程序:
DATA SEGMENT
A DW 1000
B DW 100
C DW 10
D DW 1
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX, 0FFEFH ;-0017的补码是0FFEFH
2.修改源程序,改变屏幕显示的内容。
修改的源程序:
CODE SEGMENT
ASSUME CS:CODE
MOV DL, ‘D’
MOV AH, 2
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END
实验二 数据的显示实验
一、实验目的
1.掌握屏幕上显示各种进制数据的方法。
2.掌握将内存中的二进制数转换为十进制、十六进制数的方法。
3.学会子程序的编写、调用及数据传递方法。
二、实验内容
1.把BX中的无符号二进制数转换成十进制数,在屏幕上显示出来。
2.把BX中的带符号二进制数转换成十进制数,在屏幕上显示出来。
3.求一个数据块(由10个单字节的无符号数组成)中的最大元素,并将结果以十进制数的形式在屏幕上显示出来。
4.求一个数据块(由20个单字节的带符号数组成)中的正数之和(和不超过字)和负数之和(和不超过字),并在屏幕上用十进制数的形式分别显示出两个和。
5.将寄存器BX中的二进制数转换成十六进制数,并在屏幕上显示出来。从高到低依次取出4位二进制数变为ASCII码输出即可。
三、实验设备:
PC机一台、masm汇编程序
四、实验步骤:
依照前面介绍的方法,对每一个实验内容对应的程序进行编辑、编译、连接和运行,直到达到实验要求。
1.实验内容1
(1)实验内容1的流程图,如图所示:
(2)实验内容1的程序:
CODE SEGMENT
ASSUME CS: CODE
DEC_DIV MACRO
MOV AX, BX
MOV DX, 0
DIV CX
MOV BX, DX
MOV DL, AL
ADD DL, 30H
MOV AH, 2
INT 21H
ENDM
START: MOV BX, 0FFFH
MOV CX, 1000
DEC_DIV
MOV CX, 100
DEC_DIV
MOV CX, 10
DEC_DIV
MOV CX, 1
DEC_DIV
MOV AH, 4CH
INT 21H
CODE ENDS
END START
(3)实验结果:
2. 实验内容2
(1)实验容1的程序:
DATA SEGMENT
A DW 1000
B DW 100
C DW 10
D DW 1
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX, 0FFEFH ;-0017的补码是0FFEFH
OR BX,BX
JNS NEXT
NEG BX
AND BH,7FH
MOV DL,2DH
MOV AH,2
INT 21H
NEXT:
MOV SI,OFFSET A
CALL DEC_DIV
MOV SI,OFFSET B
CALL DEC_DIV
MOV SI,OFFSET C
CALL DEC_DIV
MOV SI,OFFSET D
CALL DEC_DIV
MOV AH, 4CH
INT 21H
DEC_DIV PROC NEAR
MOV CX, [SI]
MOV AX, BX
MOV DX, 0
DIV CX
MOV BX, DX
MOV DL, AL
ADD DL, 30H
MOV AH, 2
INT 21H
RET
DEC_DIV ENDP
CODE ENDS
END START
(2)实验结果:
3.实验内容3
(1)实验内容3的流程图,如图所示:
(2)实验3的程序:
DATA SEGMENT
BLOCK DB 1,0,5,7,10,30,100,127,90,80
RESULT DB ?,?
BUF DB ‘MAX IS:$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN PROC FAR
MOV AX, DATA
MOV DS, AX
MOV CX, 9
LEA SI, BLOCK
MOV AL, [SI]
X1: INC SI
CMP AL, [SI]
JAE X2
MOV AL, [SI]
X2: LOOP X1
MOV RESULT, AL
MOV DX, OFFSET BUF
MOV AH, 9
INT 21H
MOV BL,RESULT
CBW
评论0