首页
社区
课程
招聘
[旧帖] [求助]汇编程序 调用中断 的问题 0.00雪花
发表于: 2008-7-3 14:31 3130

[旧帖] [求助]汇编程序 调用中断 的问题 0.00雪花

2008-7-3 14:31
3130
cw8253        equ 43h   ;8253控制字端口
t08253        equ 40h                ;8253定时器0端口
num                 equ 2e9ch        ;11932=n=10ms*1.1932Mhz=10*1193.2
ou8259        equ 20h   ;8259A偶地址
ji8259        equ 21h                ;8259A奇地址

data        segment
second db ?
minute db ?
hour   db ?
countsec db 00h
SPACES DB "   ","$"
data        ends

code         segment
        assume cs:code,ds:data
       
start:  
                                mov ax,data
                                mov ds,ax
                               
                                cli                                                        
                                call init8253            ;初始化8253
                                                                 
                                push ds                  ;改中断服务程序地址
                                mov ax,seg interupt
                                mov ds,ax
                                lea dx,interupt
                         mov ax,2508h
                          int 21h
                          nop
                          nop        
                          pop ds  

        mov ah,02h
                                mov dl,'2'
                                int 21h
                                                               
;                                call init8259  ;初始化8259,系统自己初始化了
                                sti

        mov ah,02h
                                mov dl,'2'
                                int 21h

l2:                        mov ah,06h                    ;直接控制台读写
                          mov dl,0ffh                   ;输入
                          int 21h
                          cmp al,' '                               
                                jnz l2             ;anykey to quit loop
                                                                                               
                                mov ah,4ch
                                int 21h
                               
init8253 proc             ;///////initialize8253
                                mov bx,num                       
                                mov        al,36h         ;00110110 选择计数器0;先读低8位,后读高8位;方式3;二进制输入
                                out cw8253,al                                                ;将控制字36h输入控制字寄存器
                                mov        al,bl                                        ;计数值低字节9c
                                                                     ;计数器0端口
                                out t08253,al                        ;写入低字节
                                mov        al,bh                                        ;写高字节
                                out t08253,al                        ;///////
                                ret
init8253 endp

init8259 proc                                                  ;initialize8259A
                                mov al,00010011b        ;上升沿触发;不使用ICW3;使用ICW4
                                out ou8259,al                                        ;写入ICW1               
                                mov al,00001000b  ;IRQ0向量号 08h
                                out ji8259,al       ;写入ICW2
                                mov al,00000001b  ;普通全嵌套;非缓冲;正常结束;8086
                                out ji8259,al                                ;写入ICW4
                                mov al,11111110b  ;只开放IRQ0
                                out ji8259,al                                ;写入OCW1
                                ret
init8259 endp

interupt proc                                                               
                                mov ah,02h        ;输出1 调试。。
                                mov dl,'1'
                                int 21h  
                                 
              mov al,20h     ;发eoi
                                out 20h,al   
                                                                                                  
                    iret               
interupt endp
                                                                                   
code        ends
end start

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己先顶下:
程序编译每问题,运行的时候,有时候能输出 1,有时候就不能,然后直接退出;要不就弹出窗口说错误指令。。。
程序初始化部分应该没问题。
有高人能帮忙调试下,告诉我这种程序该怎么写么。。。

还有,系统的向量表我改完,还用不用恢复啊?应该不用吧。。。
2008-7-3 14:36
0
游客
登录 | 注册 方可回帖
返回
//