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

内容发布更新时间 : 2024/5/10 11:19:39星期一 下面是文章的全部内容请认真阅读。

六.预习题

1.如何确定一个学生在这门科目中的名次?

答:将学生成绩按照学号依次存放在一个数据区内,设BX为指针指向首地址,使用数据结构中的排序算法进行比较(比如冒泡排序法。

2.你觉得输入结束后,采用什么方法进行比较以得到学生的名次最为简单? 答:使用排序算法,通过指针排序好成绩后,其对应的学号也相应排好。 3.准备好模块层次图.

4.给出输出显示的形式.

Num,rank,scor分别表示学生的学号,排名和分数。 实验五子程序设计 一.实验目的

1.初步掌握中断程序的设计方法。

2.初步掌握修改DOS 系统中断,以适应实际使用的方法。 二.实验内容

1.编写一个32 位二进制数除以16 位二进制数的除法程序.观察当除数为0,或超过相应寄存器范围时,程序执行的结果。

2.修改零号中断服务程序,使它具有以下功能: (1判断除数是否为0,当除数为0 时,显示相应的结果。

(2当除数不为0 时,采用适当的方法完成商超过16 位的二进制数的除法运算。 3.注意必须保护原有中断服务程序的入口地址,并在程序完毕前加以恢复。 三.流程图

四.源代码 DATA SEGMENT

messagedb 0AH,0DH,'divisor equals 0.',0dh,0ah,'$' message1 DB 0AH,0DH,' input error',0DH,0AH,'$'

message2 DB 'PLEASE INPUT THE DIVIDEND (32',0AH,0DH,'$' message3 DB 0AH,0DH,'PLEASE INPUT THE DIVISOR (16',0AH,0DH,'$' message4 DB 0AH,0DH,'THE QUOTIENT IS:','$'

message5 DB 0AH,0DH,'THE REMAINDER IS:','$' DATA ENDS

STACK SEGMENT STACK 'STACK'

STACK ENDS

CODE SEGMENT ;代码段ASSUME CS:CODE, SS:STACK ,DS:DATA start proc far push ds mov ax,0 push ax movax,data movds,ax

sti ;TF中断标志置1 mov al,0 ;保存原中断向量 mov ah,35h int 21h pushes pushbx

push dx ;写中断向量 movax,seg int00 movds,ax movdx,offset int00 mov al,0

mov ah,25h int 21h pop ds mov ah,09h

movdx,seg message2 ;提示输入32位二进制0或1 movds,dx movdx,offset message2 int 21h mov cx,10h mov ax,0000h push ax a1: mov ah,01h int 21h

cmp al,'0' ;输入数字与0比较 jz a2

cmp al,'1' ;输入数字与1比较

jnz error1 ;输入有误则跳错误显示程序 stc ;为1则将CF置1 rcl dx,1 ;dx左移,移进一个1 loop a1