主题:急寻高手,求解加分,谢谢
jinyuxlc
[专家分:120] 发布于 2005-12-16 09:37:00
中断向量表的操作
要求:该程序首先访问中断向量表,然后能自动建立一文件,将中断向量表的内容保存到文件中(文件名为INTHAND.TXT等),并将中断向量表的个各中断入口以十六进制形式显示在屏幕上(如:01#:——每行显示4个)[em18]
回复列表 (共6个回复)
沙发
chenzep [专家分:3640] 发布于 2005-12-16 09:52:00
要读出中断向量表所指向的内容不难,问题是怎么知道指向内容的长度,也就是什么说该内容什么时候结束返回。当然,你想读足够长,自己在DEBUG的话,我倒是可以尝试一下。
板凳
erping [专家分:3660] 发布于 2005-12-16 14:56:00
;2005-12-16 14:48:13
;中断向量表的操作
;要求:该程序首先访问中断向量表,然后能自动建立一文件,
;将中断向量表的内容保存到文件中(文件名为INTHAND.TXT等),
;并将中断向量表的个各中断入口以十六进制形式显示在屏幕上
;(如:01#:——每行显示4个)
.model small
.stack
.data
strOutputFileName db 'INTHAND.TXT', 0
strBuff db 4 dup (?), '$', '$'
.code
_main:
mov ax, @data
mov ds, ax
;create file
mov dx, offset strOutputFileName
xor cx, cx
mov ah, 3CH
int 21H
jc _error_create_file
push ax
;write file
mov bx, ax ;bx = file handle
push ds;save ds register
xor ax, ax
mov ds, ax ;ds = 0
mov cx, 256 * 4 ;cx = 1024 Byte
mov ah, 40H
int 21H
pop ds
jc _error_write_file
;close handle
pop bx
mov ah, 3EH
int 21H
jc _error_close_file
cld
xor ax, ax
mov es, ax
xor di, di
xor cx, cx ;中断号
mov si, offset strBuff
mov bx, 4
_@@1:
push cx
mov ax, cx
mov dx, si
mov cl, 1
call BinToHexString
mov byte ptr [si + 2], '#'
mov byte ptr [si + 3], ':'
mov byte ptr [si + 4], '$'
mov dx, si
mov ah, 9
int 21H
mov ax, [di + 0] ;ip
mov dx, si
xor cl, cl
call BinToHexString
mov dx, si
mov ah, 9
int 21H
mov dl, '-'
mov ah, 2
int 21H
mov ax, [di + 2] ;cs
mov dx, si
xor cl, cl
call BinToHexString
mov dx, si
mov ah, 9
int 21H
dec bx
jnz _@@2
mov bx, 4
mov dl, 0DH
mov ah, 2
int 21H
mov dl, 0AH
mov ah, 2
int 21H
jmp _@@3
_@@2:
mov dl, 9 ;TAB
mov ah, 2
int 21H
_@@3:
add di, 4
pop cx
inc cl
jnz _@@1
_error_create_file:
_error_write_file:
_error_close_file:
mov ax, 4C00H
int 21H
; ****************************
; 机器数转换为 16 进制字符串
; AX = 要转换的数
; CL = 要输出的形式
; CL = 0 输出 AX
; CL = 1 输出 AL
; DS:DX = 输出字符串
; ****************************
BinToHexString proc
push si
mov si, dx
mov dl, 4
test cl, cl
jz _@BinToHexString_0
mov ah, al
mov dl, 2
_@BinToHexString_0:
mov cl, 4
_@BinToHexString_1:
rol ax, cl
mov dh, al
and al, 0FH
add al, '0'
cmp al, '9'
jna _@BinToHexString_2
add al, 7
_@BinToHexString_2:
mov [si], al
inc si
mov al, dh
dec dl
jnz _@BinToHexString_1
mov byte ptr [si], '$'
pop si
ret
BinToHexString endp
end _main
3 楼
erping [专家分:3660] 发布于 2005-12-16 14:57:00
不知理解正确没有,还有我只进行了简单的数据核对.
4 楼
jinyuxlc [专家分:120] 发布于 2005-12-16 17:14:00
erping 上次的那个题你的做法不对,就是下面这个
余玄函数的设计
具体要求:
(1)保存0-90度(间隔1度的余玄函数值(至少保留2-4位小数))
(2)从键盘输入的角度值后在屏幕上输出其对应的函数值
应该将1分成90分然后用1减去输入度数与分好份的书相乘的结果
但是小弟还是没法自己编出, 汗!!!!!!!!!!!
请再次出手相助
5 楼
erping [专家分:3660] 发布于 2005-12-16 17:44:00
对不起,我实在无能为力了,我的数学只有初中水平,实在不懂
6 楼
jinyuxlc [专家分:120] 发布于 2005-12-16 19:08:00
多谢
我来回复