北邮微机原理软件实验报告

发布时间 : 星期三 文章北邮微机原理软件实验报告更新完毕开始阅读

Word 资料

.

微机原理软件实验报告

.

实验二 分支、循环程序设计

一.实验目的

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

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

开始 DS,SS,CX,BX初始化 数送入AX 与0相比 0 Z=Z+1 1 结果小于0 BX=BX+2 Y A=A+1 N N B=B+1 CX=0 Y 显示数据

Word 资料 结束 .

四.源代码

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, CS: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 AX, 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

Word 资料

.

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 在屏幕上显示出来?

答:0—9的ASCII码值依次为:30H,31H,32H,33H,34H,35H,36H,37H,38H,39H。用待显示数加30H即可得到对应ASCII码,将待显示数的ASCII码值赋给DX,使用“INT 21H”02号DOS功能调用显示字符。

2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?

答:方法1:用test指令检查该数最高位。若为0,则为正数。否则,检测其余

Word 资料

联系合同范文客服:xxxxx#qq.com(#替换为@)