北邮微机原理软件实验报告 联系客服

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

.

INPUT输入 CHECK检错 COM排序 DISPY显示 4.给出输出显示的形式.

Num,rank,scor分别表示学生的学号,排名和分数。

实验五 子程序设计

一. 实验目的

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

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

1.编写一个 32 位二进制数除以 16 位二进制数的除法程序.观察当除数为 0,或超过相应寄存器范围时,程序执行的结果。 2.修改零号中断服务程序,使它具有以下功能:

(1)判断除数是否为 0,当除数为 0 时,显示相应的结果。

(2)当除数不为 0 时,采用适当的方法完成商超过 16 位的二进制数的除法运算。

3.注意必须保护原有中断服务程序的入口地址,并在程序完毕前加以恢复。

Word 资料

.

三.流程图

开始 初始化界面 修改0号中断向量表 输入除数,被除数 检错 false true 除法 Y N 除数为0 溢出 Y 32位扩展 N 输出结果 恢复0号中断向量表 结束 Word 资料

.

四.源代码

DATA SEGMENT

message db 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 mov ax,data mov ds,ax sti ;TF中断标志置1 mov al,0 ;保存原中断向量 mov ah,35h int 21h push es push bx push dx ;写中断向量 mov ax,seg int00 mov ds,ax mov dx,offset int00 mov al,0 mov ah,25h int 21h pop ds mov ah,09h mov dx,seg message2 ;提示输入32位二进制0或1 mov ds,dx mov dx,offset message2 int 21h mov cx,10h mov ax,0000h push ax a1: mov ah,01h

Word 资料

.

int 21h cmp al,'0' jz a2 cmp al,'1'

jnz error1 stc rcl dx,1

loop a1 jmp a3 a2: clc rcl dx,1 loop a1 a3: mov cx,10h a4: mov ah,01h int 21h cmp al,'0' jz a5 cmp al,'1' jnz error2 stc pop ax rcl ax,1 push ax loop a4 jmp a6 a5: pop ax clc rcl ax,1 push ax loop a4 a6: mov ah,09h mov dx,seg message3 mov ds,dx mov dx,offset message3 int 21h mov cx,10h a7: mov ah,01h int 21h cmp al,'0' jz a8 cmp al,'1' jnz error2

Word 资料

;输入数字与0比较 ;输入数字与1比较

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

;为0则将CF置0 ;dx左移,移进一个0

;提示输入16位0或1除数