首页
社区
课程
招聘
[求助]紧急求助
发表于: 2009-2-21 15:25 3958

[求助]紧急求助

2009-2-21 15:25
3958
小弟正在读王爽的《汇编语言》,有一道实验题必须在dos实模式下运行。
我下载了一个dos安装之后,就重启进入dos,可是我找不到之前在Windows下编译好的程序,请问应该怎么弄啊。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
2
如果windows程序在NTFS格式的分区里那就麻烦了.
如果在FAT格式的分区下,用dir 和 CD就能解决了
2009-2-21 15:32
0
雪    币: 182
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
用虚拟机搞下了,方便快捷。
2009-2-21 15:34
0
雪    币: 100
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
可不可以帮我运行一下啊?我把代码给你,帮我测试测试?如果可以请留言,我会把代码发上去。虽然自己认为没有什么错,但是不运行确定一下,心里总觉得不舒服。
2009-2-21 15:37
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
5
发上来看看吧。
如果不调用特殊的dos调用,不访问硬件。
直接在windows下就可以了。
2009-2-21 17:31
0
雪    币: 100
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
assume cs:code

stack segment
db 128 dup (0)
stack ends
code segment
start:        mov ax,stack
        mov ss,ax
        mov sp,128

        mov ax,cs
        mov ds,ax
        mov si,offset int9;指向源地址,此处代码是需要拷贝到es:di处的

        mov ax,0
        mov es,ax
        mov di,204h
        mov cx,offset int9end - offset int9
        cld
        rep movsb
       
        push es:[9*4]
        pop es:[200h];原int 9中断处理程序的偏移地址保存在 0:200h处
        push es:[9*4+2]
        pop es:[202h];原int 9中断处理程序的段地址保存在 0:202h处
        cli
        mov word ptr es:[9*4],204h
        mov word ptr es:[9*4+2],0;此地址为自己写的int 9中断处理例程
        sti

        mov ax,4c00h
        int 21h

int9:        push ax
        push bx
        push cx
        push es

        in al,60h;获取扫描码

        pushf
        call dword ptr cs:[200h];首先执行原int 9中断例程做一些硬件处理。

        cmp al,9eh;A键的通码为1e,断码为1eh+80h所以为9eh

        jne int9ret;如果不为0(al-9eh),说明按下并弹起的键不是A,正常执行
        mov ax,0b800h
        mov es,ax
        mov di,0
        mov cx,2000h
        mov ah,2;颜色
        mov al,'A'
        mov bx,0
s1:        mov es:[bx],al
        mov es:[bx+1],ah
        add bx,2
        loop s1

int9ret:pop es
        pop cx
        pop bx
        pop ax
        iret

int9end:nop

code ends
end start

以上是代码
要完成的功能是,在dos中,当按下键盘A键时,除非不松开(即不产生断码),否则松开时,全屏都显示A。按下其他键则正常执行。
谢谢了、书中说了,因为其中有部分硬件处理,必须在dos实模式下才可以正常执行。
2009-2-21 17:45
0
游客
登录 | 注册 方可回帖
返回
//