您的当前位置:首页正文

大连理工大学计算机原理实验二报告

2020-07-24 来源:榕意旅游网


大连理工大学实验报告

实验室(房间号): 420 实验台号码: 4 班级: 电子1303 姓名:

指导教师签字: 成绩:

实验 二 显示程序编程训练

一、 实验目的和要求

1. 掌握在屏幕上显示数据格式的方法

2. 掌握数据分类的一种方法

二、 实验内容

1. 程序的开始必须具备一个字符串输出的功能:输出英文的姓名和学号;

2. 输出数据总的个数;

3. 分别输出正数、负数及零数据的个数。

三、 实验算法

在数据段中定义一个数据串(含有正数和负数),并将统计结果存在三个寄存器(或内存)中,在数据段中定义一个数据串(含有正数、负数和零数据),并将结果利用“字符输

出”的DOS功能在屏幕上显示出来,利用“单个字符输入”或“字符串输入”的DOS功能输入建立一个数据串,拼装为N个数据并处理后,利用“字符输出”的DOS功能在屏幕上显示结果。

四、 实验流程图

五、 程序清单

data segment

buf db 80H,7FH,00H,23H,98H,45H,77H,88H,00H,61H count equ $-buf

buf1 db 'my name is litong 201383081',0dh,0ah,'$' buf2 db 0dh,0ah,'$'

buf3 db 'number of positive is ','$' buf4 buf5 buf6 data1 data2 data3 data4 data ssg1 dw db 'number of negative is ','$' db 'number of zero is ','$' db 'number of total is ','$' db ? db ? db ? db ? ends segment 100 dup(?)

ssg1 ends code segment

assume cs:code,ds:data,ss:ssg1 main: mov ax,data mov ds,ax lea dx,buf1 mov ah,09h int 21h mov cx,10 lea bx,buf lop: mov al,[bx] and al,0ffh jz zero

;对十个数进行循环比较 ;输出字符串buf1

mov al,[bx] and al,80h jz posi jmp

nega

a1: inc bx dec cx jcxz next jmp lop

posi: mov dl,data1 inc dl mov data1,dl jmp

a1

nega: mov dl,data2

data1 ;统计负数的个数送data2

;统计正数的个数送

inc dl mov data2,dl jmp

a1

zero: mov dl,data3 ;统计零的个数送data3 inc dl mov data3,dl jmp

a1

;输出字符串buf3

next: lea dx,buf3 mov ah,09h int 21h

c1: mov si,offset data1 ;输出正数的个数 mov al,ds:[si] and al,0f0h

mov cl,04h shr al,cl add al,30h mov dl,al mov ah,02h int 21h mov al,ds:[si] and al,0fh add al,30h mov dl,al mov ah,02h int 21h lea dx,buf2

mov ah,09h int 21h lea dx,buf4

;输出字符串buf4

mov ah,09h int 21h

c2: mov si,offset data2 mov al,ds:[si] and al,0f0h mov cl,04h shr al,cl add al,30h mov dl,al mov ah,02h

;输出负数的个数

int 21h mov al,ds:[si] and al,0fh add al,30h mov dl,al mov ah,02h int 21h lea dx,buf2 mov ah,09h int 21h lea dx,buf5 mov ah,09h int 21h

buf5

;输出字符串

c3: mov si,offset data3 ;输出零的个数 mov al,ds:[si] and al,0f0h mov cl,04h shr al,cl add al,30h mov dl,al mov ah,02h int 21h mov al,ds:[si] and al,0fh add al,30h mov dl,al

mov ah,02h int 21h lea dx,buf2 mov ah,09h int 21h lea dx,buf6 mov ah,09h int 21h

c4: mov al,10h ;输出数据总个数 and al,0f0h mov cl,04h shr al,cl add al,30h

;输出字符串buf6

mov dl,al mov ah,02h int 21h mov al,10h and al,0fh add al,30h mov dl,al mov ah,02h int 21h mov ax,4c00h int 21h code ends end main

六、 实验结果与分析

运行程序,得到如下结果:

由结果可看出,程序具有统计和输出功能,且统计和输出正确,符合要求。

七、 实验体会和建议

通过本次实验,我学会了DOS功能的几种命令,更加熟悉了汇编语言程序的使用和常用的DOS功能调用方法,已经能够编写简单地带有输出功能的程序。

因篇幅问题不能全部显示,请点此查看更多更全内容