- [rotapple] 要判断OF,就把数当作有符号数处理,最高位是符号位:比如正正得负,负负得正,就溢出。 === 那 07/13 17:45
- [rotapple] 好方法。 学习了。 07/13 17:33
- [zhaojh92] 我用的是dosbox 也可以 05/14 16:33
- [billy_asm] 第四个空 add bx,[6] 意思是bx=bx+[6] 那么重点在于[6]单元是多少?上面已经给 03/12 10:28
- [mone] 第四个空格bx与电脑有关么?我的显示6023 请赐教。。。不明白我。。。 03/11 23:12
- [shiyangning] 拯救*世界 呵呵,貌似这个工具是你发给我的...无语了 04/22 17:28
- [shiyangning] 谢谢啊~ 04/22 13:20
- [shiyangning] 呵呵,水平就这点啊。子程序还不知道怎么写呢。谢谢一直给我的帮助..... 对了,你在群里 04/21 22:48
[2011-04-21 22:27] 实验12 编写0号中断程序
;用心,细心,不要因为书上有,就对着抄。还是要自己动手写一遍才能更深刻地记住。
assume cs:code
code segment
start:mov ax,cs
mov ds,ax
mov ax,0
mov es,ax
mov si,offset in0 ;指向要复制指令的首地址
mov di,200H ;要复制到的起始地址
mov cx,offset in0end-offset in0 ;计算0中断程序的字节数
rep movsb ;把0号中断程序所有指令复制到0:200开始位置
mov word ptr es:[0*4],200H ;置0号中断到中断向量表
mov word ptr es:[0*4+2],0
mov ax,1000H ;应用例子
mov bl,1
div bl ;除法溢出,调用0号中断
mov ax,4c00h
int 21h
in0: jmp short in0start
db "Divide Error!"
in0start:mov ax,cs
mov ds,ax
mov ax,0B800H
mov es,ax
mov si,202H
mov di,12*160+34*2 ;定位屏幕中间
mov cx,13 ;共13个字符
r13: mov al,[si]
mov es:[di],al
mov byte ptr es:[di+1],12 ;置字符高亮红色
inc si
add di,2
loop r13
mov ax,4c00h
int 21h
in0end: nop
code ends
end start
assume cs:code
code segment
start:mov ax,cs
mov ds,ax
mov ax,0
mov es,ax
mov si,offset in0 ;指向要复制指令的首地址
mov di,200H ;要复制到的起始地址
mov cx,offset in0end-offset in0 ;计算0中断程序的字节数
rep movsb ;把0号中断程序所有指令复制到0:200开始位置
mov word ptr es:[0*4],200H ;置0号中断到中断向量表
mov word ptr es:[0*4+2],0
mov ax,1000H ;应用例子
mov bl,1
div bl ;除法溢出,调用0号中断
mov ax,4c00h
int 21h
in0: jmp short in0start
db "Divide Error!"
in0start:mov ax,cs
mov ds,ax
mov ax,0B800H
mov es,ax
mov si,202H
mov di,12*160+34*2 ;定位屏幕中间
mov cx,13 ;共13个字符
r13: mov al,[si]
mov es:[di],al
mov byte ptr es:[di+1],12 ;置字符高亮红色
inc si
add di,2
loop r13
mov ax,4c00h
int 21h
in0end: nop
code ends
end start
评论次数(0) |
浏览次数(575) |
类型(实验) |
收藏此文 |