大连理工大学实验报告
实验室(房间号): 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功能调用方法,已经能够编写简单地带有输出功能的程序。
因篇幅问题不能全部显示,请点此查看更多更全内容