PAGE
6 -
大连理工大学
本科实验报告
(汇编语言编程实验)
课程名称: 计算机原理实验
学院(系): 电子信息与电气工程学部
专 业:
班 级:
学 号:
学生姓名:
2014 年 11 月 24 日
大连理工大学
本科实验报告
课程名称: 计算机原理实验
学院(系): 电子信息与电气工程学部
专 业:
班 级:
学 号:
学生姓名:
2014 年 11 月 24日
《计算机原理实验报告》
实验( 二 )名称: 循环程序设计编程训练
一、实验目的:
1、加深对循环结构的理解
2、掌握循环结构程序设计的方法
3、熟练掌握调试循环结构程序的方法
二、实验要求:
求某数据区的第一单元存放区内数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。并对程序进行扩展,使其能分别求出数据区中正数、零和负数的个数。
三、编程算法与说明:
为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据个数累加起来,及得区内所包含负数的个数。
循环程序是把一个程序段重复执行多次的数据结构。一般包括四部分:
1、初始化部分
(1)循环次数设定
(2)建立地址指针
(3)有些变量赋初值
2、处理部分
数据的实际处理
3、循环控制部分
常用LOOP指令
4、结束部分
存结果
循环控制指令可以是转移指令,也可以是LOOP指令。当已知循环次数或控制条件为ZF时,用LOOP指令控制循环是最简单的办法。
程序流程图:
返回Y 输出结果 NCcx←cx-1cx=0?C 修正指针Ydata3←data3+1data1←data1+1Ydata2←data2+1NNAL0是否成立AL=0是否成立MOV AL,[BX] 初始化Count:循环计数Data1:正数计数器Data2:零数计数器Data3:负数计数器
返回
Y
输出结果
N
C
cx←cx-1
cx=0?
C
修正指针
Y
data3←data3+1
data1←data1+1
Y
data2←data2+1
N
N
AL0是否成立
AL=0是否成立
MOV AL,[BX]
初始化
Count:循环计数
Data1:正数计数器
Data2:零数计数器
Data3:负数计数器
程序清单:
data segment
buf db 80H,7FH,00h,23h,98h,45h,77h,88h,00h,61h
count equ $-buf
buf1 db my name is zhangyu 201281497,0dh,0ah,$
buf2 db 0dh,0ah,$
buf3 db number of positive is ,$
buf4 db number of negative is ,$
buf5 db number of zero is ,$
buf6 db number of total is ,$
data1 db 0 ;正数
data2 db 0
data3 db 0
data4 db 0
data ends
ssg1 segment
dw 100 dup(0)
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,count
lea bx,buf
circle:mov al,[bx]
cm
原创力文档

文档评论(0)