鱼C论坛

 找回密码
 立即注册
查看: 1768|回复: 1

汇编第16章 查表的问题

[复制链接]
发表于 2013-1-3 21:48:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 西月 于 2013-1-3 22:26 编辑
assume cs:code
stack  segment
    db 128 dup (0)
stack  ends
code segment
    start:  
            mov ax,stack
            mov ss,ax
            mov sp,128
            push cs
                        pop ds
            mov si,offset int7ch
            mov ax,0
            mov es,ax
            mov di,200h
            mov cx,offset int7chEnd - offset int7ch
            cld
            rep movsb
                        cli
            mov word ptr es:[7ch*4],200h
            mov word ptr es:[7ch*4+2],0
            sti 
            mov ah,0
            int 7ch
            mov ax,4c00h
            int 21h
    int7ch:  
            jmp short set 
                        table dw do0,do1,do2,do3     ;主要是这里有问题,找不到正确的入口
        set:        
                push bx
                        cmp ah,3
                        ja int7chret
                        mov bl,ah
                        mov bh,0
                        add bx,bx
                        call word ptr table[bx]
int7chret:        
                        pop bx
                        iret
     do0:   push ax
            push bx
            push cx
            push es
            push si
            push di
            mov ax,0b800h
            mov es,ax
            mov bx,0
            mov cx,2000
      s1:   mov byte ptr es:[bx],' '
            mov byte ptr es:[bx+1],00000111b
            add bx,2
            loop s1
            pop di
            pop si
            pop es
            pop cx
            pop bx
            pop ax
            ret
     do1:
            push ax
            push bx
            push cx
            push es
            push si
            push di
            mov bx,0b800h
            mov es,bx
            mov bx,1
            mov cx,2000
       s2:  
            and byte ptr es:[bx],11111000b
            or es:[bx],al
            add bx,2
            loop s2
            pop di
            pop si
            pop es
            pop cx
            pop bx
            pop ax
            ret
     do2:   
            push ax
            push bx
            push cx
            push es
            push si
            push di
            mov cl,4
            shl al,cl
            mov bx,0b800h
            mov es,bx
            mov bx,1
            mov cx,2000
       s3:  
            and byte ptr es:[bx],10001111b
            or es:[bx],al
            add bx,2
            loop s3
            pop di
            pop si
            pop es
            pop cx
            pop bx
            pop ax
            ret
      do3:
            push ax
            push bx
            push cx
            push es
            push si
            push di
            mov ax,0b800h
            mov ds,ax
            mov es,ax
            mov si,160
            mov di,0
            mov cx,2000
            cld 
            rep movsb
            mov bx,0
            mov cx,80
       s4:  mov byte ptr es:[160*24+bx],' '
            add bx,2
            loop s4
            pop di
            pop si
            pop es
            pop cx
            pop bx
            pop ax
            ret
int7chEnd:
            nop
code ends
end start            
===========================
assume cs:code
code segment
    start:
                mov ah,0  ;测试 do0
                int 7ch
                mov ax,4c00h
                int 21h
code ends
end start

这个是我自己写的 测试程序

但是 无法找到正确的 入口

                               
登录/注册后可看大图



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-4 00:07:18 | 显示全部楼层
等待大侠的指导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 04:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表