当前位置:文档之家› 计算机应用实验报告

计算机应用实验报告

计算机应用实验报告
计算机应用实验报告

计算机应用实验报告

LG GROUP system office room 【LGA16H-LGYY-LGUA8Q8-LGA162】

实验一乘法运算实验

一、实验目的:

1、了解调试程序DEBUG的常用命令和功能。

2、掌握多字节乘法运算程序的编写方法。

3、学会程序调试方法。

二、实验原理

三、实验内容:

将两个无符号数相乘,将结果数存入规定地址。

四、实验报告内容:

1、实验用源程序:

开机选择“开始”→“运行”→输入“command”→输入“debug”调出debug应用程序。

Debug源程序:

D 2000:0000 ;查看部分内存内容

E 2000:0000 2A 30 15 1B ;写入数据

D 2000:0000 ;查看输入后的数据

A 回车 ;写程序

MOV AX,2000

MOV DS,AX

MOV AX,[0000]

MOV BX,[0002]

MUL BX ;让AX乘以DX,结果存入DX:AX

MOV [0004],AX

MOV [0007],DX

INT 20H ;正常中断程序

Ctrl+M ;退出编程,由键盘输入

G ;运行程序

D 2000:0000 ;查看程序运行结果

2、实验结果分析

输出结果显示为72-61 18-05结果正确。

实验中遇到的问题,在debug里输入程序要细心,如果输入有误为保证结果的正确应重新打开debug程序。实验中发现输入的大小写对程序的结果没有影响。

实验二除法运算实验

一、实验目的:

1、了解调试程序DEBUG的常用命令和功能。

2、掌握多字节除法运算程序的编写方法。

3、学会程序调试方法。

二、实验内容:

将两个无符号数相除,将结果数存入规定地址。

被除数和除数的存放地址及数据如下:

三、实验报告内容:

1、实验用源程序

按照实验一中的方法调出debug:

Debug源程序:

D 2000:0000 ;查看部分内存内容

E 2000:0000 5D 7C 5D 4C 3B 2A ;写入数据

D 2000:0000 ;查看输入后的数据

A ;写程序

MOV AX,2A3B

MOV DX,4C5D

MOV BX,7C5D

MOV AX,[0010]

MOV DX,[0012]

MOV BX,[0014]

DIV BX ;被除数DX:AX除BX,商存入AX,余数存到DX MOV [0016],AX

MOV [0018],DX

INT 20H ;正常中断程序

Ctrl+M ;退出编程,由键盘输入

G ;运行程序

D 2000:0000 ;查看程序运行结果

2、实验结果分析

实验正确结果:7D-FF 9E-11

实验中应注意的问题,在输入数值时应高低位颠倒输入,程序运算时是先进后出。遇到的问题:当输入正序时得到的结果是EE-56 E7-6F

(为错误结果)。

实验三数据转换实验

一、实验目的:

1、进一步掌握DEBUG使用方法。

2、掌握数制转换程序的编写方法。

3、学会调试循环程序和子程序方法。

二、实验内容:

将单元2000:0000~003中的8位十进制数35,26,38,74(数据高位在前,低位在后),转换成二进制数,存入单元2000:0004~0007

中。

在编写程序时,要充分利用循环程序和调用子程序的方法来简化程序设计,并注意循环的地址及子程序入口地址的设置方法。

三、实验报告内容:

1、实验用源程序

STACKS SEGMENT STACK ;堆栈段

DW 128 DUP() ;只有128个字节

STACKS ENDS

DATAS SEGMENT ;数据段

D1 DB 10

; D2 DB

; D3 DB 38H

; D4 DB 74H

DATAS ENDS

CODES SEGMENT ;代码段

ASSUME CS:CODES,DS:DATAS

START: MOV AX,DATAS ;初始化

MOV DS,AX

MOV AX,2000H

MOV DS,AX

MOV AX,2635H

MOV DI,0000H

MOV [DI],AX

MOV DI,0002H

MOV AX,7438H

MOV [DI],AX

MOV BL,10

MOV BX,0010

MOV [BX],AL

DO1 MACRO ADD1,ADD2

MOV SI,CX

MOV DI,0000H

MOV CX,4

NEXT:

MOV AL,[DI]

SHR AL,4

MUL BL

PUSH AX

MOV AL,[DI]

AND AL,0FH

POP DX

XOR AH,AH

XOR DH,DH

ADD AL,DL

MOV SI,[CL+4]

MOV [DI+4],AL

INC DI

LOOP NEXT

ENDM

DO1 0H 4H

DO1 1 5

DO1 2 6

DO1 3 7

MOV AX,4C00H ;退出程序 INT 21H

CODES ENDS

END START

实验四显示字符串实验

一、实验目的:

1、掌握宏汇编语言源程序的编辑方法。

2、学会用MASM及LINK程序将源程序文件转换成可执行文件的方法。

3、学会调用DOS软中断功能来显示字符串的方法。

二、实验步骤:

1、利用全屏幕编辑程序来编辑源程序,文件扩展名为ASM,操作

如下:

A>NE 盘号:文件名.ASM

2、利用MASM程序将源程序文件汇编成目标文件,目标文件扩展

名为OBJ,操作如下:

A>MASM 盘号:文件名.ASM 盘号:文件名.OBJ

在编辑中发生错误,要用NE程序来修改源程序文件。

3、用LINK程序将目标文件转换成可执行文件,可执行文件扩展

名为EXE,操作如下:

A>LINK 盘号:文件名.OBJ 盘号:文件名.EXE

4、在DOS环境下执行可执行文件。

三、实验内容:按照宏汇编语言源程序格式的要求,编写一个文件,显示如

下字符串:

I like microcomputer very much.

四、实验报告内容:

1、实验用源程序

DW 128 DUP() ;只有128个字节

STACKS ENDS

DATAS SEGMENT ;数据段

MSG1 DB 'I like microcomputer very much.','$'

DATAS ENDS

CODES SEGMENT ;代码段

ASSUME CS:CODES,DS:DATAS

START: MOV AX,DATAS ;初始化

MOV DS,AX

MOV DX,OFFSET MSG1

MOV AH,9

INT 21H

MOV AX,4C00H ;退出程序

INT 21H

CODES ENDS

END START

2、实验结果分析

实验显示出了“I like microcomputer very much.”

实验五显示字符串实验

一、实验目的:

1、进一步掌握字符串的显示方法。

2、掌握键盘信号的输入和分析方法。

3、进一步熟悉源程序的编写方法。

二、实验内容:

先使计算机提问下列问题:

Do you like this lesson(Y/N)

如果用户回答N,计算机回答:

You should change your interest.

如果用户回答Y,计算机回答:

You are good student.

三、实验报告:

1、实验用源程序:

STACKS SEGMENT STACK ;堆栈段

DW 128 DUP() ;注意这里只有128个字节

STACKS ENDS

DATAS SEGMENT ;数据段

MSG1 DB 'Do you like this lesson(Y/N)','$'

MSG2 DB 10,'You should change your interest.','$'

MSG3 DB 10,'You are good student.','$'

DATAS ENDS

CODES SEGMENT ;代码段

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START: MOV AX,DATAS ;初始化

MOV DS,AX

;请在这里添加您的代码

MOV DX,OFFSET MSG1

MOV AH,9

INT 21H

INT 21H

CMP AL,'Y'

JZ Y1

CMP AL,'y'

JZ Y1

CMP AL,'N'

JZ Y2

CMP AL,'n'

JZ Y2

Y1: MOV DX,OFFSET MSG3

MOV AH,9

INT 21H

JMP DONE

Y2: MOV DX,OFFSET MSG2

MOV AH,9

INT 21H

DONE:

MOV AX,4C00H ;退出程序 INT 21H

CODES ENDS

END START

实验六数据排序实验

一、实验目的:

1、掌握比较数据大小的方法。

2、掌握由大到小排列数据的方法。

3、掌握显示某一数据区的方法。

二、实验内容:

先在数据区输入十个随机排列的数据,然后用气泡排序法把数据由大到小排列好,并显示在屏幕上。

然后改变数据的内容,再用同样的程序来排列,并显示出结果。

第一次排列的数据为:

41H,70H,03H,53H,88H,16H,20H,3FH,74H,8EH

第二次排列的数据为:

10H,78H,23H,04H,1AH,7AH,35H,4BH,9FH,0BH

显示结果:班级,学号,名字

排序好的数据。

三、实验报告内容:

1、实验用源程序

STACKS SEGMENT STACK ;堆栈段

DW 128 DUP()

STACKS ENDS

DATAS SEGMENT ;数据段

MSG1 DB 'Do you like this lesson(Y/N)','$'

MSG2 DB 10,'You should change your interest.','$'

MSG3 DB 10,'You are good student.','$'

DATAS ENDS

CODES SEGMENT ;代码段

ASSUME CS:CODES,DS:DATAS,SS:STACKS

MOV DS,AX

MOV DX,OFFSET MSG1

MOV AH,9

INT 21H

MOV AH,1

INT 21H

CMP AL,'Y'

JZ Y1

CMP AL,'y'

JZ Y1

CMP AL,'N'

JZ Y2

CMP AL,'n'

JZ Y2

Y1: MOV DX,OFFSET MSG3

MOV AH,9

INT 21H

JMP DONE

Y2: MOV DX,OFFSET MSG2

MOV AH,9

INT 21H

DONE:

MOV AX,4C00H ;退出程序 INT 21H

CODES ENDS

END START

实验七显示字符串实验

一、实验目的:

1、掌握显示菜单的方法。

2、学会分析键盘输入数据的方法。

3、掌握编写宏指令和宏调用的方法。

二、实验步骤:

先在屏幕上显示下列菜单

What item do you want to know?

1.My name

2.My age

3.My interesting work

4.My family

Please input the number:

然后根据输入的数据,分别回答你的姓名,年龄,感兴趣的工作和家庭成员,具体回答内容由同学自己拟定。

在程序中尽量采用宏指令,并注意程序设计的技巧。

三、实验报告内容:

1、实验用源程序

STACKS SEGMENT STACK ;堆栈段

DW 128 DUP()

STACKS ENDS

DATAS SEGMENT ;数据段

M01 DB 'What item do you want to know','$'

M02 DB 10,28 DUP(8),' 1. My name ','$'

M03 DB 10,28 DUP(8),' 2. My age ','$'

M04 DB 10,28 DUP(8),' 3. My interesting work ','$'

M06 DB 10,28 DUP(8),'Please input the number: ','$' M07 DB 10,28 DUP(8),' Li Juan ','$'

M08 DB 10,28 DUP(8),' 22 ','$'

M09 DB 10,28 DUP(8),' play balls. ','$' M10 DB 10,28 DUP(8),' My parents and me. ','$'

DATAS ENDS

CODES SEGMENT ;代码段

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START: MOV AX,DATAS ;初始化

MOV DS,AX

PRT MACRO X

MOV DX,OFFSET X

MOV AH,9

INT 21H

ENDM

IPT MACRO

MOV AH,1

INT 21H

ENDM

IFGO MACRO X,Y

CMP AL,X

JZ Y

ENDM

PRT M01

PRT M02

PRT M03

PRT M04

PRT M05

PRT M06

IPT

IFGO '1',Y1

IFGO '2',Y2

IFGO '3',Y3

IFGO '4',Y4

Y1: PRT M07

JMP DONE

Y2: PRT M08

JMP DONE

Y3: PRT M09

JMP DONE

Y4: PRT M10

DONE:

MOV AX,4C00H ;退出程序

INT 21H

CODES ENDS

实验八时钟显示实验

一、实验目的:

1、了解计算机中时钟数据的存取方法。

2、掌握时钟显示的编写方法。

3、进一步掌握BIOS和DOS中子程序的调用方法。

二、实验内容:

在计算机屏幕的右上角显示时钟值,直到按下一个键再返回DOS。

三、实验报告内容:

1、实验用源程序:

DATA SEGMENT

WHOUR DB 0 ;秒表的时、分、秒、毫秒

WMIN DB 0

WSEC DB 0

WMSEC DB 0

OLD1CH DD 0

SIGNAL DB 0

COUNT DW 0

;---------------------------------------------------------------------------------------------------------------

CHOUR DB 0 ;闹钟的时、分、秒

CMIN DB 0

CSEC DB 0

;-----------------------------------------------------------------------------------------------------------------

SPACE DB 2000 DUP (' ')

PATTERN DB 6 DUP (' '),0C9H,26 DUP (0CDH),0BBH,6 DUP (' ')

DB 6 DUP (' '),0BAH,26 DUP (20H),0BAH,6 DUP (' ')

DB 6 DUP (' '),0C8H,26 DUP (0CDH),0BCH,6 DUP (' ')

;----------------------------------------------------------------------------------------------------------------

DBUFFER DB 8 DUP (':'),12 DUP (' ')

DBUFFER1 DB 20 DUP (' ')

DBUFFER2 DB 11 DUP (':'),15 DUP (' ')

STR1 DB 0DH,0AH, ' INPUT ''M'' TO NEXT-STATE, INPUT ''Q'' TO EXIT: $',0DH,0AH,'$'

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKS

;------------------------------------------------------------------- PUSHA1 MACRO

PUSH DS

PUSH AX

PUSH BX

PUSH CX

PUSH DX

ENDM

POPA1 MACRO

POP DX

POP CX

POP BX

POP AX

POP DS

ENDM

;图形化界面设计

START:

MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AX,0003H ;设置显示方式为40*25彩色文本方式 INT 10H

LEA DX,STR1 ;显示提示信息

MOV AH,9

INT 21H

MOV BP,OFFSET SPACE

MOV DX,0B00H

MOV CX,1000

MOV BX,0000H

MOV AX,1300H

INT 10H ;显示字符串,定义显示方式

;---------------------------------------------------------------

;主程序

LP1:

MOV AH,1 ;从键盘输入单个字符

INT 21H

CMP AL,'M' ;AL='M'

JNE LP5

CALL DATE ;显示系统日期

LP2: MOV AH,1 ;从键盘输入单个字符

INT 21H

CMP AL,'M' ;AL='M'

JNE LP5

LP3: MOV AH,1 ;从键盘输入单个字符

INT 21H

CMP AL,'M' ;AL='M'

JNE LP4

CALL STOPWATCH ;显示秒表

LP4: MOV AH,1 ;从键盘输入单个字符

INT 21H

CMP AL,'M' ;AL='M'

JNE LP5

CALL RING

LP5: CMP AL,'Q' ;AL='Q'

JNE LP1

MOV AH,4CH ;返回DOS状态

INT 21H

;---------------------------------------------------------------;显示日期子程序

DATE PROC NEAR

DISPLAY9:

MOV AH,2AH ;取日期CX:DH:DL=年:月:日 AL=星期 INT 21H

MOV SI,0

MOV AX,CX

MOV BX,100

DIV BL

MOV BL,AH

CALL BCDASC1 ;日期数值转换成相应的ASCII码字符 MOV AL,BL

CALL BCDASC1

INC SI

MOV AL,DH

CALL BCDASC1

INC SI

MOV AL,DL

CALL BCDASC1

MOV BP,OFFSET DBUFFER1

MOV DX,001DH

;;;;;;;;;; L;;;;;;;;;;;;;

MOV CX,20

MOV BX,004EH

MOV AX,1301H

INT 10H

MOV AH,02H ;设置光标位置

;;;;;;;;222

MOV DX,0900H

INT 10H

MOV BX,0018H

REPEA: MOV CX,0FFFFH ;延时

REPEAT: LOOP REPEAT

DEC BX

JNZ REPEA

MOV AH,01H ;读键盘缓冲区字符到AL寄存器 INT 16H

JE DISPLAY1

JMP LP2

MOV AX,4C00H

INT 21H

RET

DATE ENDP

;------------------------------------------------------

;显示时间子程序

TIME PROC NEAR

DISPLAY1:

MOV SI,0

MOV BX,100

DIV BL

MOV AH,2CH ;取时间CH:CL=时:分 DH:DL=秒:1/100秒 INT 21H

MOV AL,CH

CALL BCDASC ;将时间数值转换成ASCII码字符

INC SI

MOV AL,CL

CALL BCDASC

INC SI

MOV AL,DH

CALL BCDASC

MOV BP,OFFSET DBUFFER

MOV DX,003AH

MOV CX,20

MOV BX,004EH

MOV AX,1301H

INT 10H

MOV AH,02H

MOV DX,0310H

MOV BH,0

INT 10H

MOV BX,0018H

RE: MOV CX,0FFFFH

REA: LOOP REA

DEC BX

JE DISPLAY1

JMP LP3

MOV AX,4C00H

INT 21H

RET

TIME ENDP

;------------------------------------------------------

;显示秒表子程序

STOPWATCH PROC NEAR

DISPLAY2:

PUSHA1

MOV SI,0

MOV BX,100

DIV BL

;CALL WATCH

DISP3:

MOV AX,DATA

MOV DS,AX

MOV AL,WHOUR

CALL BCDASC2 ;将时间数值转换成ASCII码字符 INC SI

MOV AL,WMIN

CALL BCDASC2

INC SI

MOV AL,WSEC

CALL BCDASC2

MOV AL,WMSEC

INC SI

CALL BCDASC2

MOV BP,OFFSET DBUFFER2

MOV DX,0037H

MOV CX,20

MOV BX,004EH

MOV AX,1301H

INT 10H

MOV AH,02H

MOV DX,0300H

MOV BH,0

INT 10H

MOV BX,0018H

RE2: MOV CX,0FFFFH

REA2: LOOP REA2

DEC BX

相关主题
文本预览
相关文档 最新文档