微机原理及应用(微型计算机技术)实验报告
预 习 报 告
实验一、 两个多位十进制数相加的实验
实验目的: 1、学习数据传送和算术运算指令的用法。2、熟悉在PC机上建立,
汇编、链接、调试和运行8088汇编语言程序的过程。 实验仪器: 工业控制计算机 一台
原理图:
实验步骤:
1、 屏幕编辑
EDIT 文件名.ASM 回车
?保存文件?。
2、 宏汇编
MASM 文件名.ASM 回车
如果被汇编的程序有语法错误,返回1、屏幕编辑修改程序,直到汇编后无错误。
3、 用LINK命令产生执行文件(EXE文件)
LINK 文件名; 回车
Warning:NO STACK Segment
4、程序的执行
文件名 回车
数据表格:
28056
47193
75249
实 验 报 告
实验一、两个多位十进制数相加的实验
实验目的: 1、学习数据传送和算术运算指令的用法。 实验内容:
程序清单:
CRLF MACRO MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
MOV AH, 02H
INT 21H
ENDM
DATA SEGMENT
DATA1 DB 33H,39H,31H,37H,34H DATA2 DB 36H,35H,30H,38H,32H DATA ENDS
STACK SEGMENT STA DB 20 DUP (?) TOP EQU LENGTH STA 2、熟悉在PC机上建立,汇编、链接、调试和运行8088汇编语言程序的过程。 将两个多位十进制数相加,要求被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处。
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV SI,OFFSET DATA2 MOV BX
CALL DISPL CRLF
MOV SI
MOV BX,05 CALL DISPL
CRLF
MOV DI, OFFSET DATA2
CALL ADDA
MOV SI, OFFSET DATA1
MOV BX
CALL DISPL
CRLF
MOV AX,4C00H
INT 21H ,05 ,OFFSET DATA1 ,05
DISPL PROC NEAR DS1: MOV AH,02
MOV DL,[SI+BX-1] INT 2IH
DEC BX
JNZ DS1
RET
DISPL ENDP
ADDA PROC NEAR
MOV DX
MOV BP
MOV BX
AD1: SUB BYTE PTR [SI+BX-1],30H SUB BYTE PTR [DI+BX-1],30H DEC BX JNZ AD1
MOV SI,DX
MOV DI, BP
MOV CX,05 CLC AD2: MOV AL,[SI]
MOV BL,[DI]
ADC AL,BL AAA MOV [SI],SI ,DI ,05 ,AL
INC SI
INC DI
LOOP AD2
MOV SI,DX
MOV DI,BP
MOV BX.05
AD3: ADD BYTE PTR [SI十BX-1],30H
ADD BYTE PTR [DI+BX-1],30H
DEC BX
JNZ AD3
RET
ADDA ENDP
CODE ENDS
END START
4、 调试过程:
1、用EDIT命令建立汇编语言源程序(ASM文件)。
EDIT 文件名.ASM 回车
通过键盘输入本次实验程序,然后按?ALT+F?键,选择?保存文件?。 再次按?save file?键,选择?exit?。
2、用MASM命令产生目标文件[OBJ文件]。
MASM 文件名.ASM 回车
此时屏幕显示:
The IBM Personal Computer Assembler Version 1.00 Copyright IBM Corp 1989
Object filename [EX MOVS.OBJ]: 回车
Source listing [NULL.LST]: 回车
Cross reference [NULL.CRF]: 回车
如果被汇编的程序有语法错误,则屏幕上将显示?错误程序的行号及信息?然后返回1、屏幕编辑修改程序,直到汇编后还给出如下信息: Warning Servers
Errers Errors
0 0
进行下一步。
3、用LINK命令产生执行文件(EXE文件)
LINK 文件名; 回车
Warning:NO STACK Segment
4、程序的执行
文件名 回车
实验结果:
28056
47193
75249
预 习 报 告
实验二、BCD码相乘的实验
实验目的: 掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法
运算。
实验仪器: 工业控制计算机 一台
原理图:
实验步骤:
1、 屏幕编辑
EDIT 文件名.ASM 回车
?保存文件?。
2、宏汇编
MASM 文件名.ASM 回车
如果被汇编的程序有语法错误,返回1、屏幕编辑修改程序,直到汇编后无错误。
3、用LINK命令产生执行文件(EXE文件)
LINK 文件名; 回车
Warning:NO STACK Segment
4、程序的执行
文件名 回车
数据表格:
48
75
3600
实 验 报 告
实验二、BCD码相乘的实验
实验目的:掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运
算。
实验内容: 1、实现BCD码的乘法,要求被乘数和乘数以组合的BCD码形式存程序清单:
DISPL
ADD DL,30H
MOV AH,02
INT 21H
ENDM
CRLF
MOV DL,0DH
MOV AH,02
INT
MOV
MOV
INT 21H
ENDM
DATA SEGMENT
DATA1
DATA2 放,各占一个内存单元,乘积存放在另外两个内存单元中。 2、由于没有组合的BCD码乘法指令,程序中采用将乘数1作为计数器,累加另一个乘数的方法得到计算结果。 MACRO MACRO 21H DL,0AH AH,02 DB 01001000B DB 01110101B
RESULT DW ?
DATA ENDS
STACK SEGMENT
STA DB 20 DUP (? ) TOP EQU LENGTH STA STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
M0V DI,OFFSET
MOV SI, OFFSET DATA1
MOV CL
SHR AH
MOV DL
DISPL
MOV Al
MOV BL
AND AL
MOV DI MOV AX,DATA , RESULT MOV AH,[SI] ,04 ,CL ,AH ,[SI] ,AL ,00001111B ,AL
DISPL
CRLF MOV SI,OFFSET DATA2 MOV AH,[SI]
MOV CL,04
SHR AH,CL MOV DL
DISPL
MOV AL
AND AL
MOV DL
DISPL
CRLF
S1: CMP BL
JZ S2 CLC
DAA MOV DL
MOV AL
ADC AL
DAA MOV DH XOR DXMOV ALADC AL,AH ,[SI] ,00001111B ,AL ,DX ,0 ,[SI] ,DL ,AL ,00H ,DH ,AL
MOV AL,BL
DEC AL
DAS
MOV BL,AL
JMP S1
S2: MOV [RESULT], DX S3: MOV AXMOV SI, DX MOV CL,4 SHR DH,CL ,SI ,00001111B ,DH ,SI ,4 ,CL ,SI ,00001111B ,4C00H MOV DL,,DH DISPL MOV DX AND DH MOV DL DISPL MOV DX MOV CL SHR DL DISPL MOV DX AND DL DISPL CRLF
INT 21H
CODE ENDS
END START
调试过程:
1、用EDIT命令建立汇编语言源程序(ASM文件)。
EDIT 文件名.ASM 回车
通过键盘输入本次实验程序,然后按?ALT+F?键,选择?保存文件?。 再次按?save file?键,选择?exit?。
2、用MASM命令产生目标文件[OBJ文件]。
MASM 文件名.ASM 回车
此时屏幕显示:
The IBM Personal Computer Assembler Version 1.00 Copyright IBM Corp 1989
Object filename [EX MOVS.OBJ]: 回车
Source listing [NULL.LST]: 回车
Cross reference [NULL.CRF]: 回车
如果被汇编的程序有语法错误,则屏幕上将显示?错误程序的行号及信息?然后返回1、屏幕编辑修改程序,直到汇编后还给出如下信息: Warning Servers
Errers Errors
0 0
进行下一步。
3、用LINK命令产生执行文件(EXE文件)
LINK 文件名; 回车
Warning:NO STACK Segment
4、程序的执行
文件名 回车 实验结果:
48
75
3600
预 习 报 告
实验三、从键盘输入数据并显示的实验
实验目的: 掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为
ASCII码的原理。
实验仪器: 工业控制计算机 一台
原理图:
实验步骤:
1、屏幕编辑
EDIT 文件名.ASM 回车
?保存文件?。
2、宏汇编
MASM 文件名.ASM 回车
如果被汇编的程序有语法错误,返回1、屏幕编辑修改程序,直到汇编后无错误。
3、用LINK命令产生执行文件(EXE文件)
LINK 文件名; 回车
Warning:NO STACK Segment
4、程序的执行
文件名 回车
数据表格:
INPUT HEXNUMBER:A1B2回车(随意输入四位十六进制数据)
1010 0001 1011 0010 (显示数要和上述输入的十六进制数相符)
实 验 报 告
实验三、从键盘输入数据并显示的实验
实验目的: 掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为
ASCII码的原理。
实验内容: 编写程序,将键盘接收到的四位十六进制数转换为等值的二进
制数,再显示在终端上。
程序清单: CRLF ENDM DATA MESS ERROR DATA STACK STA TOP STACK CODE
MACRO MOV MOV INT MOV MOV INT SEGMENT DB DB ENDS SEGMENT DW DW ENDS SEGMENT
AH,02H DL,0DH 21H AH,02H DL,0AH 21H
‘INPUT HEXNUMBER:$’
‘INPUT ERROR!’,0DH,0AH,
32 DUP (?) ?
$’
‘
ASSUME START:
TTT:
EXIT:
GETNUM
GGG:
CS:CODE,DS:DATA,ES:DATA,SS:STACK MOV AX,DATA MOV DS,AX MOV ES,AX MOV SP,TOP MOV AH,09H MOV DX,OFFSET MESS INT 21H CALL GETNUM MOV CX,0010H MOV BX,DX ROL BX,1 MOV DL,BL AND DL,01H ADD DL,30H MOV AH,02H INT 21H LOOP TTT MOV AX,4C00H INT 21H PROC NEAR PUSH CX XOR DX,DX MOV AH,01H INT 21H
CMP JZ CMP JZ CMP JB SUB CMP JB CMP JB SUB CMP JBE CMP JB CMP JA SUB GETS: MOV SHL XOR ADD JMP
KKK: MOV AL,0DH PPP AL,20H PPP AL,30H KKK AL,30H AL,0AH GETS AL,11H KKK AL,07H AL,0FH GETS AL,2AH KKK AL,2FH KKK AL,20H CL,04 DX,CL AH,AH DX,AX GGG AH,09H
PPP:
GETNUM
CODE
END
MOV DX,OFFSET ERROR INT 21H JMP EXIT PUSH CRLF POP POP RET ENDP ENDS START DX DX CX
调试过程:
1、用EDIT命令建立汇编语言源程序(ASM文件)。
EDIT 文件名.ASM 回车
通过键盘输入本次实验程序,然后按?ALT+F?键,选择?保存文件?。 再次按?save file?键,选择?exit?。
2、用MASM命令产生目标文件[OBJ文件]。
MASM 文件名.ASM 回车
此时屏幕显示:
The IBM Personal Computer Assembler Version 1.00 Copyright IBM Corp 1989
Object filename [EX MOVS.OBJ]: 回车
Source listing [NULL.LST]: 回车
Cross reference [NULL.CRF]: 回车
如果被汇编的程序有语法错误,则屏幕上将显示?错误程序的行号及信息?然后返回1、屏幕编辑修改程序,直到汇编后还给出如下信息: Warning Servers
Errers Errors
0 0
进行下一步。
3、用LINK命令产生执行文件(EXE文件)
LINK 文件名; 回车
Warning:NO STACK Segment
4、程序的执行
文件名 回车
实验结果:
INPUT HEXNUMBER:A1B2回车(随意输入四位十六进制数据)
1010 0001 1011 0010 (显示数要和上述输入的十六进制数相符)
预 习 报 告
实验四、将键盘输入的小写字母转换成大写字母的实验 实验目的:了解小写字母和大写字母在计算机内的表示方法,并学习如何进行
转换。
实验仪器: 工业控制计算机 一台
原理图:
实验步骤:
1、屏幕编辑
EDIT 文件名.ASM 回车
?保存文件?。
2、宏汇编
MASM 文件名.ASM 回车
如果被汇编的程序有语法错误,返回1、屏幕编辑修改程序,直到汇编后无错误。
3、用LINK命令产生执行文件(EXE文件)
LINK 文件名; 回车
Warning:NO STACK Segment
4、程序的执行
文件名 回车
数据表格:
输入字母 zxcvb 回车(随意输入几位小写字母)
原地方显示 ZXCVB (根据上面输入字母写转换的大写字母)
实 验 报 告
实验四、将键盘输入的小写字母转换成大写字母的实验 实验目的:了解小写字母和大写字母在计算机内的表示方法,并学习如何进
行转换。
实验内容:接收键盘字符(以A-C为结束),并将其中的小写字母转变成为
大写字母。然后进行显示。
程序清单:
CRLF
ENDM
DATA
BUF
DATA
STACK
STA
TOP
STACK
CODE
ASSUME MACRO MOV MOV INT MOV MOV INT SEGMENT DB ENDS SEGMENT DB EQU ENDS SEGMENT AH,02H DL,0DH 21H AH,02H DL,0AH 21H 82 DUP (?) 50 DUP (?) LENGTH STA CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: MOV MOV MOV MOV MOV MOV MOV KKK: MOV GGG: MOV INT CMP JZ CMP JZ
CMP JB CMP JA SUB TTT: MOV INC JMP BBB: MOV MOV
MOV AX,DATA DS,AX ES,AX AX,STACK SS,AX SP,TOP BX,OFFSET BUF SI,0000H AH,01H 21H AL,03H PPP AL,0DH BBB AL,61H TTT AL,7AH TTT AL,20H [BX+SI],AL SI GGG [BX+SI],AL AL,0AH [BX+SI+1],AL
PPP:
CODE
END MOV MOV MOV MOV INT JMP MOV INT ENDS START AL,‘$’ [BX+SI+2],AL AH,09H DX,BX 21H KKK AX,4C00H 21H
调试过程:
1、用EDIT命令建立汇编语言源程序(ASM文件)。
EDIT 文件名.ASM 回车
通过键盘输入本次实验程序,然后按?ALT+F?键,选择?保存文件?。 再次按?save file?键,选择?exit?。
2、用MASM命令产生目标文件[OBJ文件]。
MASM 文件名.ASM 回车
此时屏幕显示:
The IBM Personal Computer Assembler Version 1.00 Copyright IBM Corp 1989
Object filename [EX MOVS.OBJ]: 回车
Source listing [NULL.LST]: 回车
Cross reference [NULL.CRF]: 回车
如果被汇编的程序有语法错误,则屏幕上将显示?错误程序的行号及信息?然后返回1、屏幕编辑修改程序,直到汇编后还给出如下信息:
Warning Servers
Errers Errors
0 0
进行下一步。
3、用LINK命令产生执行文件(EXE文件) LINK 文件名; 回车
Warning:NO STACK Segment
4、程序的执行
文件名 回车
实验结果:
输入字母 zxcvb
原地方显示 ZXCVB (
根据上面输入字母写转换的大写字母) 回车(随意输入几位小写字母)
预 习 报 告
实验五、排序实验
实验目的:掌握用汇编语言编写排序程序的思路和方法。 实验仪器: 工业控制计算机 一台 原理图:
实验步骤:
1、屏幕编辑
EDIT 文件名.ASM 回车
?保存文件?。
2、宏汇编
MASM 文件名.ASM 回车 如果被汇编的程序有语法错误,返回1、屏幕编辑修改程序,直到汇编后无错误。
3、用LINK命令产生执行文件(EXE文件)
LINK 文件名; 回车
Warning:NO STACK Segment
4、程序的执行
文件名 回车
数据表格:
INPUT SEGMENT VALUE:0000回车 (段地址随意输入四位十六进制数) INPUT OFFSET VALUE:1000回车(偏移地址随意输入四位十六进制数) SORT OK!
02
45
6A
8C
A4
B7
C5
E8
FD
(上面这列九个数要按上小下大的顺序排列)
实 验 报 告
实验五、排序实验
实验目的:掌握用汇编语言编写排序程序的思路和方法。 实验内容:从首地址为1000H开始存放50个数,要求设计程序将这些数由小
到大排序,排序后的数,仍放在该区域中。
程序清单:
CRLF MACRO
MOV
MOV
INT
MOV
MOV
INT
ENDM
DATA SEGMENT
SORTNUM EQU
MESS1 DB
MESS2 DB
MESS3 DB
ERROR DB
DATA ENDS
STACK SEGMENT
STA DW
TOP DW AH,02H DL,0DH 21H AH,02H DL,0AH 21H 9 ‘INPUT SEGMENT VALUE:$’‘INPUT OFFSET VALUE:$’ ‘SORT OK!’,0DH,0AH,‘$’‘INPUT ERROR!’,0DH,0AH, 32 DUP (?) ? $’ ‘
STACK
CODE
ASSUME ENDS SEGMENT CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV
MOV
MOV
MOV
MOV
MOV
INT
CALL
MOV
CRLF
MOV
MOV
INT
CALL
MOV
PUSH
POP
MOV
DEC
XOR
III: MOV
MOV AX,DATA DS,AX ES,AX SP,TOP AH,09H DX,OFFSET MESS1 21H GETNUM ES,DX AH,09H DX,OFFSET MESS2 21H GETNUM SI,DX ES DS CX,SORTNUM CX BX,BX AL,[SI+BX] AH,BL
PUSH MOV SUB DEC MOV JJJ: INC PUSH MOV CMP JBE MOV MOV UUU: POP LOOP MOV MOV MOV PUSH MOV MOV POP INC POP LOOP
PUSH CX CX,SORTNUM CX,BX CX DX,BX DX BX BX,DX AL,[SI+BX] UUU AL,[SI+BX] AH,DL BX JJJ CL,[SI+BX] [SI+BX],AL DL,AH BX BX,DX [SI+BX],CL BX BX CX III DS
VVV:
DISP1
MOV AX,DATA MOV DS,AX MOV AH,09H MOV DX,OFFSET MESS3 INT 21H POP DS MOV CX,SORTNUM MOV AL,[SI] CALL DISP1 CRLF INC SI LOOP VVV MOV AX,4C00H INT 21H PROC NEAR PUSH CX MOV BL,AL MOV DL,BL MOV CL,04 ROL DL,CL AND DL,0FH CALL DISPL MOV DL,BL AND DL,0FH CALL DISPL
DISP1 DISPL
DDD:
DISPL GETNUM
POP CX RET ENDP PROC NEAR ADD DL,30H CMP DL,3AH JB DDD ADD DL,27H MOV AH,02H INT 21H RET ENDP PROC NEAR PUSH CX XOR DX,DX MOV AH,01H INT 21H CMP AL,0DH JZ PPP CMP AL,20H JZ PPP SUB AL,30H JB KKK CMP AL,0AH JB GFTS
GETS:
KKK:
PPP:
GETNUM
CODE CMP AL,11H JB KKK SUB AL,07H CMP AL,0FH JBE GETS CMP AL,2AH JB KKK CMP AL,2FH JA KKK SUB AL,20H MOV CL,04H SHL DX,CL XOR AH,AH ADD DX,AX JMP GGG MOV AH,09H MOV DX,OFFSET ERROR INT 21H PUSH DX CRLF POP DX POP CX RET ENDP ENDS
END START
调试过程:
1、用EDIT命令建立汇编语言源程序(ASM文件)。
EDIT 文件名.ASM 回车
通过键盘输入本次实验程序,然后按?ALT+F?键,选择?保存文件?。 再次按?save file?键,选择?exit?。
2、用MASM命令产生目标文件[OBJ文件]。
MASM 文件名.ASM 回车
此时屏幕显示:
The IBM Personal Computer Assembler Version 1.00 Copyright IBM Corp 1989
Object filename [EX MOVS.OBJ]: 回车
Source listing [NULL.LST]: 回车
Cross reference [NULL.CRF]: 回车
如果被汇编的程序有语法错误,则屏幕上将显示?错误程序的行号及信息?然后返回1、屏幕编辑修改程序,直到汇编后还给出如下信息: Warning Servers
Errers Errors
0 0
进行下一步。
3、用LINK命令产生执行文件(EXE文件)
LINK 文件名; 回车
Warning:NO STACK Segment
4、程序的执行
文件名 回车
实验结果:
INPUT SEGMENT VALUE:0000回车 (段地址随意输入四位十六进制数) INPUT OFFSET VALUE:1000 回车(偏移地址随意输入四位十六进制数) SORT OK!
02
45
6A
8C
A4
B7
C5
E8
FD
(上面这列九个数要按上小下大的顺序排列)