[计算机]汇编语言实验一
- 格式:doc
- 大小:480.00 KB
- 文档页数:8
- 1 -
1 南昌大学实验报告
学生姓名: 学号: 专业班级: 电气电气信息类Ⅲ073班
实验类型:□ 验证 □ 综合 □ 设计 □ 创新 实验日期: 2008-11-03 实验成绩:
一.实验目的
熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。
二.实验内容
1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用;
2.伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;
3.利用的INT 21H的1号功能实现键盘输入的方法;
三.实验要求
1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;
2.了解利用的INT 21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法;
3.阅读下面程序段。
四.实验环境
PC微机
DOS操作系统或 WINDOWS 操作系统
MASM。EXE,LINK。EXE,DEBUG。COM或宏汇编集成环境
五.实验步骤
程序:
DATA SEGMENT
MESSAGE DB 'THIS IS A SAMPLE PROGRAM OF KEYBOARD AND DISPLY'
DB 0DH,0AH,'PLEASE STRIKE THE KEY!',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DB 50 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESSAGE - 2 -
2 MOV AH,9
INT 21H
AGAIN: MOV AH,1
INT 21H
CMP AL,1BH
JE EXIT
CMP AL,61H
JC ND
CMP AL,7AH
JA ND
AND AL,11011111B
ND: MOV DL,AL
MOV AH,2
INT 21H
JMP AGAIN
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
DEBUG 调试
- 3 -
3
例题:
DATAS SEGMENT
X DW 5
Y DW 6
Z DW 7
W DW ?
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATAS
MOV DS,AX
MOV AX,X
ADD AX,Y
ADD AX,Z
MOV W,AX
RET
;此处输入代码段代码
MOV AH,4CH - 4 -
4 INT 21H
CODES ENDS
END START
程序目的:实现X+Y+Z赋值给W
DEBUG调试:
- 5 -
5
实验步骤:
1.用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。
2.用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
3.用TYPE命令显示1产生的.LST文件。
显示的内容:
MICROSOFT (R) MACRO ASSEMBLER VERSION 5.00
11/9/8 PAGE 1-1
1 0000 DATA SEGMENT
2 0000 54 48 49 53 20 49 53 MESSAGE DB 'THIS IS A SAMPLE
PROGR
AM OF KEYBOARD AND DISPLY'
3 20 41 20 53 41 4D 50
4 4C 45 20 50 52 4F 47
5 52 41 4D 20 4F 46 20
6 4B 45 59 42 4F 41 52
7 44 20 41 4E 44 20 44
8 49 53 50 4C 59
9 002F 0D 0A 50 4C 45 41 53 DB 0DH,0AH,'PLEASE STRIKE THE KEY!
',0DH,0AH,'$'
10 45 20 53 54 52 49 4B
11 45 20 54 48 45 20 4B
12 45 59 21 0D 0A 24
13 004A DATA ENDS
14 0000 STACK SEGMENT PARA STACK 'STACK'
15 0000 0032[ DB 50 DUP(?)
16 ??
17 ]
18
19 0032 STACK ENDS
20 0000 CODE SEGMENT
21 ASSUME CS:CODE,DS:DATA,SS:STACK
22 0000 B8 ---- R START: MOV AX,DATA
23 0003 8E D8 MOV DS,AX
24 0005 BA 0000 R MOV DX,OFFSET MESSAGE
25 0008 B4 09 MOV AH,9
26 000A CD 21 INT 21H
27 000C B4 01 AGAIN: MOV AH,1
28 000E CD 21 INT 21H
29 0010 3C 1B CMP AL,1BH - 6 -
6 30 0012 74 12 JE EXIT
31 0014 3C 61 CMP AL,61H
32 0016 72 06 JC ND
33 0018 3C 7A CMP AL,7AH
34 001A 77 02 JA ND
35 001C 24 DF AND AL,11011111B
36 001E 8A D0 ND: MOV DL,AL
37 0020 B4 02 MOV AH,2
38 0022 CD 21 INT 21H
39 0024 EB E6 JMP AGAIN
40 0026 B4 4C EXIT: MOV AH,4CH
41 0028 CD 21 INT 21H
42 002A CODE ENDS
43 END START - 7 -
7 MICROSOFT (R) MACRO ASSEMBLER VERSION 5.00
11/9/8 SYMBOLS-1
SEGMENTS AND GROUPS:
N A M E LENGTH ALIGN COMBINE CLASS
CODE . . . . . . . . . . . . . . 002A PARA NONE
DATA . . . . . . . . . . . . . . 004A PARA NONE
STACK . . . . . . . . . . . . . 0032 PARA STACK 'STACK'
SYMBOLS:
N A M E TYPE VALUE ATTR
AGAIN . . . . . . . . . . . . . L NEAR 000C CODE
EXIT . . . . . . . . . . . . . . L NEAR 0026 CODE
MESSAGE . . . . . . . . . . . . L BYTE 0000 DATA
ND . . . . . . . . . . . . . . . L NEAR 001E CODE
START . . . . . . . . . . . . . L NEAR 0000 CODE
@FILENAME . . . . . . . . . . . TEXT 2
31 SOURCE LINES
31 TOTAL LINES
10 SYMBOLS
49850 + 451686 BYTES SYMBOL SPACE FREE
0 WARNING ERRORS
0 SEVERE ERRORS
4.用LINK将.OBJ文件连接成可执行的.EXE文件。
5.在DOS状态下运行LINK产生的.EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未