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

我的博客

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

[2010-05-17 16:55] 编写中断例程(求一WORD型数据的平方)P253

assume cs:code
code segment
start: mov ax,cs
       mov ds,ax
       mov si,offset sqr;设置ds:si
            
       mov ax,0
       mov es,ax
       mov di,200h;设置es:di
            
       mov cx,offset sqrend-offset sqr
       cld
       rep movsb;(安装中断例程:字符串传送)
            
        mov ax,0
       mov es,ax
       mov word ptr es:[7ch*4],200h
       mov word ptr es:[7ch*4+2],0;设置中断向量表
            
            
        s: mov ax,3456
          int 7ch
          add ax,ax
          adc dx,dx
            
          mov ax,4c00h
          int 21h
            
        sqr: mul ax
        iret
                        
        sqrend: nop;中断例程
code ends
end start
==================================
DEBUG上跟踪执行:

0000:0219 0000          ADD     [BX+SI],AL
0000:021B 0000          ADD     [BX+SI],AL
0000:021D 0000          ADD     [BX+SI],AL
0000:021F 0000          ADD     [BX+SI],AL
-t

AX=4000  BX=0000  CX=0000  DX=00B6  SP=FFFA  BP=0000  SI=0039  DI=0203
DS=0B68  ES=0000  SS=0B68  CS=0000  IP=0202   OV UP DI PL NZ NA PO CY
0000:0202 CF            IRET;碰到IRET和INT指令(相对于转移指令),需T(单步)执行,否则则出现以下两种问题!
-t

AX=4000  BX=0000  CX=0000  DX=00B6  SP=0000  BP=0000  SI=0039  DI=0203
DS=0B68  ES=0000  SS=0B68  CS=0B68  IP=002D   NV UP EI PL NZ NA PO NC
0B68:002D 03C0          ADD     AX,AX
-t

AX=8000  BX=0000  CX=0000  DX=00B6  SP=0000  BP=0000  SI=0039  DI=0203
DS=0B68  ES=0000  SS=0B68  CS=0B68  IP=002F   OV UP EI NG NZ NA PE NC
0B68:002F 13D2          ADC     DX,DX
-t

AX=8000  BX=0000  CX=0000  DX=016C  SP=0000  BP=0000  SI=0039  DI=0203
DS=0B68  ES=0000  SS=0B68  CS=0B68  IP=0031   NV UP EI PL NZ NA PE NC
0B68:0031 B8004C        MOV     AX,4C00
-

++++
++++
问题1:

0B68:0034 CD21          INT     21
0B68:0036 F7E0          MUL     AX
0B68:0038 CF            IRET
0B68:0039 90            NOP
0B68:003A 36            SS:
0B68:003B 96            XCHG    SI,AX
0B68:003C 16            PUSH    SS
0B68:003D 8B00          MOV     AX,[BX+SI]
0B68:003F 898672FF      MOV     [BP+FF72],AX
0B68:0043 8BD8          MOV     BX,AX
0B68:0045 D1E3          SHL     BX,1
0B68:0047 8B369A16      MOV     SI,[169A]
-t

AX=0D80  BX=0000  CX=0000  DX=0000  SP=0000  BP=0000  SI=0039  DI=0203
DS=0B68  ES=0000  SS=0B68  CS=0B68  IP=002B   NV UP EI PL NZ NA PO NC
0B68:002B CD7C          INT     7C
-g 3a;g命令执行但看不到正确结果??

Program terminated normally
-r
AX=0D80  BX=0000  CX=0000  DX=0000  SP=0000  BP=0000  SI=0039  DI=0203
DS=0B68  ES=0000  SS=0B68  CS=0B68  IP=002B   NV UP EI PL NZ NA PO NC
0B68:002B CD7C          INT     7C
-        

++++
问题2:

 
Microsoft (R) Overlay Linker  Version 3.60
Copyright (C) Microsoft Corp 1983-1987.  All rights reserved.

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>debug
-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B04  ES=0B04  SS=0B04  CS=0B04  IP=0100   NV UP EI PL NZ NA PO NC
0B04:0100 7403          JZ      0105
-q

C:\DOCUME~1\ADMINI~1>debug p1.exe
-r
AX=0000  BX=0000  CX=003A  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B58  ES=0B58  SS=0B68  CS=0B68  IP=0000   NV UP EI PL NZ NA PO NC
0B68:0000 8CC8          MOV     AX,CS
-
评论次数(0)  |  浏览次数(467)  |  类型(1) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码