钟计算机综合实践1-5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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