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

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

.

stc rcl bx,1 loop a7 jmp a9 a8: clc rcl bx,1 loop a7 jmp a9

error1: mov ah,09h mov dx,seg message1 mov ds,dx mov dx,offset message1 int 21h jmp a1

error2: mov ah,09h mov dx,seg message1 mov ds,dx mov dx,offset message1 int 21h jmp a6

a9: mov cx,0000h pop ax div bx cmp bx,20h jz a14 push dx push ax mov ah,09h mov dx,seg message4 mov ds,dx mov dx,offset message4 int 21h mov bx,08h call xianshi mov bx,08h pop cx call xianshi mov ah,09h mov dx,seg message5 mov ds,dx mov dx,offset message5 int 21h mov bx,08h

Word 资料

;输入错误提示

.

pop cx call xianshi a14: pop dx ;恢复中断向量表

pop cx push ds mov ds,cx mov al,0 mov ah,25h int 21h pop ds ret start endp xianshi proc near a11: test cx,10000000b jz a10 mov ah,02h mov dl,'1' int 21h sal cx,1 dec bx jnz a11 jmp a12 a10: mov ah,02h mov dl,'0' int 21h sal cx,1 dec bx jnz a11 a12: ret xianshi endp int00 proc far

pop cx add cx,2 push cx cmp bx,0 jne next mov ah,09h mov dx,seg message mov ds,dx mov dx,offset message int 21h mov bx,20h jmp finish

Word 资料

;修改后的中断服务子程序 ;修改返回地址

;除数为0,显示错误信息; 退出

.

next: push ax mov dx,ax mov dx,0 div bx mov cx,ax pop ax div bx finish:iret int00 endp code ends end start

;做除法,被除数低16位AX暂存于堆栈 ; 被除数高16位改为低16位 ; 被除数高16位为0 ; 第一次除法 ; 保存高16位的商于CX

;恢复低16位被除数,高16位是上次的余数 ;商是CX:AX,余数是DX

五.运行结果

Word 资料

.

六.预习题

1.如何保护原有中断向量表中的中断服务程序的入口地址?

答:先读取中断向量表中0号中断的地址,压入堆栈,程序结束时弹出堆栈,写回中断向量表即可。

2.如何将你的中断服务程序入口地址置入中断向量表?

答:可以进行DOS功能调用,25H号用来把中断向量表写入DS:DX,35H号读取ES:BX中断向量表。其中,AL为中断类型。

Word 资料

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