【发布时间】:2012-03-26 12:24:28
【问题描述】:
您好,我已将除法溢出中断重定向到我自定义创建的中断,该中断在屏幕上打印“你好,我在这里”,而不是打印奇怪的 ascii 字符。有人能告诉我为什么吗?这是代码
[ORG 100h]
jmp start
message: dw 'hello man here i am'
prntstr: push ax
push bx
push cx
push dx
push si
push di
push bp
push ds
push es
push cs
pop ds
mov ah, 0x13
mov al, 1
mov bh, 0
mov bl, 7
mov dx,0x0a03
mov cx,11
push cs
push es
mov bp,message
int 0x10
pop es
pop ds
pop bp
pop di
pop si
pop dx
pop cx
pop bx
pop ax
ret
tsr: mov ah, 0
int 0x16
call prntstr
iret
;mov ah,4ch
;mov al, 6
;int 0x21
;iret
divs: mov ax,0x8569
mov dl,2
div dl
ret
start: xor ax,ax
mov es,ax
mov word[es:0*4], tsr
mov [es:0*4+2],cs
call divs
mov ax,0x4c00
int 0x21
关于代码我不明白的另一件事是我在 es:0*4 处设置了偏移量——我假设 00 是除法溢出中断的位置?什么是 0*4 因为任何东西乘以零都意味着相同,那么为什么是 4 ?提前谢谢
【问题讨论】:
标签: assembly dos nasm interrupt bios