[计算机]汇编语言实验一

  • 格式: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。若未