汇编网首页登录博客注册
girl_lulu的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  

[2010-05-17 17:23] 编写在屏幕上显示以0结尾的字符串中断例程(完成jmp near ptr s指令功能)【检测点13.1(2)】

assume cs:code

data segment

        db 'conversation',0

data ends

code segment

start:

        mov ax,cs

        mov ds,ax

        mov si,offset nr

        mov ax,0

        mov es,ax

        mov di,200h

        mov cx,offset nrend-offset nr

        cld

        rep movsb

        ;以上9句为安装中断例程

 

        mov word ptr es:[7ch*4],200h

        mov word ptr es:[7ch*4+2],0

        ;以上2句为设置中断向量

 

        mov ax,data

        mov ds,ax

        mov si,0

        mov ax,0b800h

        mov es,ax

        mov di,12*160

s:      cmp byte ptr [si],0

        je ok

        mov al,[si]

        mov es:[di],al

        inc si

        add di,2

        mov bx,offset s-offset ok

        int 7ch

ok:     mov ax,4c00h

        int 21h

 

nr:     push bp         

        mov bp,sp

        add [bp+2],bx

nrret:  pop bp

        iret            

nrend:  nop ;中断例程           

 

code ends

end start

 
===================
DEBUG上结果:

Source filename [.ASM]: p1
Object filename [p1.OBJ]:
Source listing  [NUL.LST]:
Cross-reference [NUL.CRF]:

  50454 + 450650 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors

C:\DOCUME~1\ADMINI~1>link
【conversation】
Microsoft (R) Overlay Linker  Version 3.60
Copyright (C) Microsoft Corp 1983-1987.  All rights reserved.

Object Modules [.OBJ]:
Object Modules [.OBJ]: p1
Run File [P1.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
LINK : warning L4021: no stack segment

C:\DOCUME~1\ADMINI~1>p1.exe;直接加载运行,DEBUG上显示屏结果

C:\DOCUME~1\ADMINI~1>





C:\DOCUME~1\ADMINI~1>debug p1,exe
File not found
-q

C:\DOCUME~1\ADMINI~1>debug p1.exe
-u
0B69:0000 8CC8          MOV     AX,CS
0B69:0002 8ED8          MOV     DS,AX
0B69:0004 BE4B00        MOV     SI,004B
【conversation】0000        MOV     AX,0000
0B69:000A 8EC0          MOV     ES,AX
0B69:000C BF0002        MOV     DI,0200
0B69:000F B90800        MOV     CX,0008
0B69:0012 FC            CLD
0B69:0013 F3            REPZ
0B69:0014 A4            MOVSB
0B69:0015 26            ES:
0B69:0016 C706F0010002  MOV     WORD PTR [01F0],0200
0B69:001C 26            ES:
0B69:001D C706F2010000  MOV     WORD PTR [01F2],0000
-g;G命令,DEBUG上出现显示屏结果

Program terminated normally
-
评论次数(0)  |  浏览次数(379)  |  类型(1) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码