2 yzy4829229 yzy4829229 于 2015.06.16 22:07 提问

关于汇编语言中断程序的问题

中断错误实例,中断类型码是0,也就是div溢出,根据书本的课后的习题,我做了之后,
来测试,发现,在发生div溢出的时候,为什么打在屏幕上的字符居然出现在第一个命令执行后的ax中,这是怎么搞的。第一幅图片是正常显示,默认是divide flow,第二幅图片是我自定义,但是提示信息却不在下面,而是在中间,下面的代码是第二幅图的自定义代码,第三幅图中断程序返回来的信息为什么覆盖在了第一个-t后的ax中呢?
![![图片说明
图片说明

图片说明

assume cs:code
code segment
start:  mov ax,cs
        mov ds,ax
        mov si,do0

        mov ax,0
        mov es,ax
        mov di,200h

        mov cx,offset do0end-offset do0

        cld
        rep movsb

        mov ax,0
        mov es,ax
        mov word ptr es:[0],200h
        mov word ptr es:[2],0

        mov ax,4c00h
        int 21h

do0:    jmp short do0start
        db "Helloyouarer!"

do0start:       mov ax,cs
                mov ds,ax
                mov si,202h

                mov ax,0b800h
                mov es,ax
                mov di,12*160+36*2

                mov cx,13
s:              mov al,[si]
                mov es:[di],al

                inc si
                add di,2

                loop s

                mov ax,4c00h
                int 21h
do0end:nop
code ends
end start


1个回答

devmiao
devmiao   Ds   Rxr 2015.06.16 22:42

推荐你不要用debug,用ollydbg或者用turbo debug(dos程序),这样可以单步执行直接观察很方便的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
汇编语言----中断指令
中断是输入/输出程序中常用的控制方式,是指计算机暂停当前正在执行的程序而转去执行处理某事件的中断服务程序.当中断服务程序执行完毕,再恢复执行被暂时停止的程序 (1)中断指令   格式 : INT n   功能 : 产生一个中断类型号为n的软中断   指令完成的操作   a.标志寄存器入栈   b.断电地址入栈 : cs先入栈,然后ip入栈   c.从中断向量表中获取中断服务程序入口地
汇编语言中断程序实例——定时小程序
;计算机在系统加电期间,把系统定时器初始化为每55ms发出一次中断请求。CPU在相应定时中断请求后转入08H号中断处理程序。 ;BIOS提供的08H号中断处理程序中有一条中断指令“INT 1CH”。所以每秒要调用1000/55≈18.2次1CH号中断处理程序。 ;而BIOS的1CH号中断处理程序实际上并没有执行任何工作,只有一条中断返回指令(IRET) ;这样安排的目的就是为应用程序留下一个软
汇编语言自定义int9中断程序
代码解释如下:;改变int9中断例程改变它的中断处理程序,可更新到Blog assume cs:code stack segment db 128 dup(0) stack ends code segment start: mov ax,stack mov ss,ax mov sp,128 call cpy_new_int9 ;复制自定义的int9程序
王爽《汇编语言》实验13——编写、应用中断例程
(1)编写并安装int 7CH中断例程,功能为显示一个用0结尾的字符串。 (2)编写并安装int 7CH中断例程,功能为完成loop指令的功能。 (3)补全程序,分别在屏幕的2、4、6、8行显示4句英文诗。
汇编语言 实验12 编写0号中断的处理程序
汇编语言 实验12 编写0号中断的处理程序1.需要的基础知识中断:CPU收到某种特殊信号之后,停下手头的工作,转向处理发出这种特殊信号的程序。而这种特殊的信号,就叫做中断。 一共有四种中断类型: 1.除数为0的错误 2.单步执行(标志寄存器TF位=1时执行,如t指令) 3.执行into指令 4.执行int指令 我们之前写的程序的结尾一般都是mov ax
汇编语言程序设计 中断应用程序设计
编制一计算比赛成绩的程序,要求完成以下功能: (1) 9名评委,每个评委给分范围为0~10(整数); (2) 9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点二位); (3) 将得分在光标位置处显示出来。 2、编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30字的grade数组中,各数据的格式为: 学号,成绩1,成绩2,…,成绩5 然后根据grade中的学生成绩,把学生名次填入rank数据组中,并显示出来,格式为: 学号,名次 3、利用INT 1CH(大约每秒中断18.2次)编写一个中断驻留程序,要求在屏幕的右上角显示计算机中当前系统时间,显示格式为 时:分:秒:1/100秒 4、输入一个菱形的两条对角线长,在屏幕上用‘*’号画出一个彩色的菱形。 5、设置图形方式并显示彩条,要求:
关于汇编语言中INT10中断的详细功能
关于汇编语言中INT10中断的详细功能,功能号:00H,功能:设置显示模式;功能号01H,功能:设置光标形状 ;功能号:02H,功能:用文本坐标下设置光标位置 ------
王爽《汇编语言》(第二版) 学习笔记 (第十七章 使用BIOS进行键盘输入和磁盘读写)
 第十七章使用BIOS进行键盘输入和磁盘读写本章概述:1.         大多数有用的程序都需要处理用户的输入,键盘输入是最基本的输入。2.         程序和数据通常需要长期存储,磁盘是最常用的存储设备。BIOS为这两种外设的I/O提供了最基本的中断例程。一、             int 9 中断例程对键盘输入的处理1.         键盘输入将引发9号中断,
汇编语言-内中断
内中断和int指令介绍
汇编语言中的外中断——键盘事件
汇编语言中的外中断和内中断差不多 1、取中断类型码n 2、标致寄存器入栈,IF=0,TF=0 2、CS、IP入栈 3、(IP)=(n*4),(CS)=(n*4+2) 但是外中断和内中断的中断类型码的来源不同,所以第一步肯定是不一样的,其他相同 下面来讲一下键盘事件下的处理方式 只要有键盘事件发生,就会触发int 9,这个int 9是硬件扫描过程,其实就是CPU对按键的IO口进行扫