北邮微机原理软件实验报告(精) 下载本文

微机原理软件实验报告 实验二分支、循环程序设计 一.实验目的

1.开始独立进行汇编语言程序设计。 2.掌握基本分支,循环程序设计。 3.掌握最简单的DOS 功能调用。 二.实验内容

1.安排一个数据区,内存有若干个正数,负数和零。每类数的个数都不超过9。 2.编写一个程序统计数据区中正数,负数和零的个数。 3.将统计结果在屏幕上显示。 三.流程图

四.源代码 DATA SEGMENT Z DW 0 ;数据中0的个数 A DW 0 ;数据中大于0的个数 B DW 0 ;数据中小于0的个数

NUM DW 9,8,0,-7,6,-5,-4,3,2,-1,0,-8,-1,9,0,0,1 ;设定的一组数据,其中4个0,7个正数,6个负数,符合题目要求

N DW ($-NUM/2 ;该组数据的个数 TYPE0 DB 0DH, 0AH, 'Number of zeros : $' TYPE1 DB 0DH, 0AH, 'Number of greater than 0 : $'

TYPE2 DB 0DH, 0AH, 'Number of less than 0 : $' LOCATE DW TYPE0, TYPE1, TYPE2 DATA ENDS

STACK SEGMENT STACK DW 128 DUP(? STACK ENDS CODE SEGMENT

ASSUME DS:DATA, SS:STACK, C S:CODE START: MOV AX, DATA MOV DS, AX MOV AX, STACK

MOV SS, AX ;初始化DS、SS指向STA

MOV BX, OFFSET NUM ;将NUM中第一个数字的地址送入BX MOV CX, N ;将N中数字个数送入CX

LOOP1: MOV AX, [BX] ;取出NUM中的第一个数字 CMP A X, 0 ;与零相比

JZ IFZ ;判断结果为是0,跳转到IFZ处继续执行 SAL AX, 1

JC IFL ;判断结果是小于0,跳转到IFL

INC WORD PTR A ;否则,A自加,然后继续执行程序 JMP CONTINUE

IFL: INC WORD PTR B ;B计数加1 JMP CONTINUE IFZ: INC Z ;Z计数加1 CONTINUE:

ADD BX, 2 ;指针+2,继续送入下一数字 LOOP LOOP1 ;循环CX次判断 MOV CX, 3 ;共显示3个字符串 XOR BX, BX DISP:

MOV DX, LOCATE[BX]

MOV AH, 09H ;DOS 09号功能调用,显示字符串 INT 21H MOV DX, Z[BX]

ADD DX, '0' ;转换为ASCII码

MOV AH, 02H ;DOS 02号功能调用,显示字符 INT 21H

ADD BX, 2 ;指针+2(DW

LOOP DISP MOV AX, 4C00H INT 21H ;返回DOS系统 CODE ENDS END START 五.运行结果

六.预习题

1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来?