钟计算机综合实践1-5

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四川大学网络教育学院实践课程报告

实践课程计算机综合实践

校外学习中心

专业电气工程及其自动化层次专升本

年级 10秋

学生姓名

学号

2013年 9 月 18 日

实验一熟悉、使用DEBUG调试工具

一.实验目的:

1.了解并逐步熟悉汇编语言的编辑方法及特点.

2.复习8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。

3.掌握汇编语言的编辑、汇编及连接的过程。

4.了解并逐步掌握运用DEBUG进行调试汇编语言程序。

二.实验内容:

1.运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。

2.运用MASM﹒EXE文件进行汇编,修改发现的各种语法错误,直至正确,形成*.OBJ文件。

3.运用LINK.EXE文件进行连接,形成*.EXE文件。

4.仔细阅读附录中的DEBUG部分,掌握各种命令的所有方法。5.运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。

6.再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。

程序清单:

多字节非压缩型BCD数除法(88754/6=14792)

DATA SEGMENT

A D

B 8,8,7,5,4

B DB 6

C DB 5DUP (0)

N EQU 5

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE;DS:DATA;ES:DATA,START MOV AX,DATA

MOV DS,AX

MOV ES,AX

CLD

LEA SI,A

LEB DI,C

MOV CX,N

MOV AH,0

LP1: LODSB

AAD

DIV B

STOSB

LOOP LP1

MOV CX,N

LEA DI,C

LP2: MOV DL,[DI]

MOV AH,2

INT 21H

LOOP

MOV AH,4CH

INT

CODE:ENDS

三、实验体会

通过本次实验,我了解了汇编语言的编辑方法及特点,掌握汇编语言的编辑、汇编及连接的过程,并逐步掌握运用DEBUG进行调试汇编语言程序。但对其的熟悉程度和应用还远远不够,因此需要经过加强练习,提高水平。

实验二设计汇编语言程序

一.实验内容

1、字符串统计程序设计

2、双字乘法程序设计

二.实验内容

1.字符串统计。

在数据段中建立一个缓冲区BUFFER,变量VER,编程使得程序具有如下功能:从键盘输入一个子字符串存入VER,从键盘输入包含一个或几个子字符串的字符串存入BUFFER。统计BUFFER中的字符串含有多少个子字符串以及每个子字符串的位置。

2.双字乘法程序。

设计一个程序实现32位带符号双精度数乘法运算。由于只有8位和16位的乘法指令。因此32位乘法运算是不能直接用指令实现的。但可以用16位乘法指令,通过 4次想乘然后把部分积想加。对于带符号数,可以先根据绝对值求得积。然后判断积的符号,若积为负数,应将其用补码表示。

三.实验流程与程序:

32位带符号数乘法流程图

32位无符号乘法子程序流程图data segment

ioport equ 0d400h-0280h

io8253a equ ioport+280h

io8253b equ ioport+283h

io8255a equ ioport+288h

io8255b equ ioport+28bh

io0832a equ ioport+290h

data1 db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh

db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h

db 80h,66h,4eh,38h,25h,15h,09h,04h

db 00h,04h,09h,15h,25h,38h,4eh,66h ;正弦波数据

time db 120,106,94,89,79,70,63,59 ;发不同音时8253的计数器初值

msg db 'Press 1,2,3,4,5,6,7,8,ESC:',0dh,0ah,'$'

num db ? ;num为8253计数器初值的序号

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov dx,offset msg

mov ah,9

int 21h ;显示提示信息

sss: m ov ah,7

int 21h ;从键盘接收字符,不回显

cmp al,1bh

je exit ;若为ESC键,则转EXIT

cmp al,31h

jl sss

cmp al,38h

jg sss ;若不在'1'-'8'之间转sss

sub al,31h

mov num,al ;求出相应的时间常数的序号

mov cx,60 ;取60次32个正弦波数据

ddd: mov si,0

lll: mov al,data1[si] ;取正弦波数据

mov dx,io0832a

out dx,al ;放音

call delay ;调延时子程序

inc si

cmp si,32 ;是否取完32个数据

jl lll ;若没有,则继续

loop ddd ;总循环次数60是否完,没有,则继续jmp sss

exit: mov ah,4ch

int 21h

delay proc near ;延时子程序

ccc: mov bx,offset time

mov dx,io8253b ;置8253通道0为方式0工作mov al,10h

相关文档
最新文档