当前位置:首页 > 北邮微机原理软件实验报告
.
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除数
共分享92篇相关文档