中断例程如下:
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset s
mov ax,0
mov es,ax
mov di,200h
mov cx,offset send-offset s
cld
rep movsb
mov bx,7ch*4
mov es:[bx],word ptr 200h
mov es:[bx+2],word ptr 0
mov ax,4c00h
int 21h
s: dec cx
jcxz over
push bp
mov bp,sp
add [bp+2],bx
pop bp
over: iret
send: nop
code ends
end start
安装后,调试教材上的应用举例如下:
D:\masm>debug shy13_2t.exe
-u0 1b
0B60:0000 B800B8 MOV AX,B800
0B60:0003 8EC0 MOV ES,AX
0B60:0005 BF8007 MOV DI,0780
0B60:0008 BBF7FF MOV BX,FFF7
0B60:000B B95000 MOV CX,0050
0B60:000E 26 ES:
0B60:000F C60521 MOV BYTE PTR [DI],21
0B60:0012 83C702 ADD DI,+02
0B60:0015 CD7C INT 7C
0B60:0017 90 NOP
0B60:0018 B8004C MOV AX,4C00
0B60:001B CD21 INT 21
-g 12
AX=B800 BX=FFF7 CX=0050 DX=0000 SP=0000 BP=0000 SI=0000 DI=0780
DS=0B50 ES=B800 SS=0B60 CS=0B60 IP=0012 NV UP EI PL NZ NA PO NC
0B60:0012 83C702 ADD DI,+02
-t
AX=B800 BX=FFF7 CX=0050 DX=0000 SP=0000 BP=0000 SI=0000 DI=0782
DS=0B50 ES=B800 SS=0B60 CS=0B60 IP=0015 NV UP EI PL NZ NA PE NC
0B60:0015 CD7C INT 7C
-d ss:fff0
0B60:FFF0 B0 00 CA 16 2D 07 00 B8-00 00 15 00 60 0B 64 05 ....-.......`.d.
-t
AX=B800 BX=FFF7 CX=0050 DX=0000 SP=FFFA BP=0000 SI=0000 DI=0782
DS=0B50 ES=B800 SS=0B60 CS=0000 IP=0200 NV UP DI PL NZ NA PE NC
0000:0200 49 DEC CX
-d ss:fff0
0B60:FFF0 B0 00 CA 16 2D 07 00 B8-00 00 17 00 60 0B 06 32 ....-.......`..2
-u
0000:0200 49 DEC CX
0000:0201 E307 JCXZ 020A
0000:0203 55 PUSH BP
0000:0204 8BEC MOV BP,SP
0000:0206 015E02 ADD [BP+02],BX
0000:0209 5D POP BP
0000:020A CF IRET
0000:020B B0A0 MOV AL,A0
0000:020D FECE DEC DH
0000:020F F6E6 MUL DH
0000:0211 8BD8 MOV BX,AX
0000:0213 B002 MOV AL,02
0000:0215 FECA DEC DL
0000:0217 F6E2 MUL DL
0000:0219 03D8 ADD BX,AX
0000:021B 8AC1 MOV AL,CL
0000:021D 33C9 XOR CX,CX
0000:021F 8A0C MOV CL,[SI]
-g 20a
AX=B800 BX=FFF7 CX=004F DX=0000 SP=FFFA BP=0000 SI=0000 DI=0782
DS=0B50 ES=B800 SS=0B60 CS=0000 IP=020A NV UP DI PL NZ NA PO CY
0000:020A CF IRET
-d ss:fff0
0B60:FFF0 F8 FF 00 00 0A 02 00 00-64 05 0E 00 60 0B 06 72 ........d...`..r
-t
AX=B800 BX=FFF7 CX=004F DX=0000 SP=0000 BP=0000 SI=0000 DI=0782
DS=0B50 ES=B800 SS=0B60 CS=0B60 IP=000E NV UP EI PL NZ NA PE NC
0B60:000E 26 ES:
0B60:000F C60521 MOV BYTE PTR [DI],21 ES:0782=67
----------------能够构成循环。
-g 17
AX=B800 BX=FFF7 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0820
DS=0B50 ES=B800 SS=0B60 CS=0B60 IP=0017 NV UP EI PL NZ AC PO NC
0B60:0017 90 NOP
----------------此时,显示一行叹号。
-q
D:\masm>
- [游客] 感谢 11/15 22:10
- [游客] 把:DD 5937000,改成:DD 4294967295,你的错误,立刻就暴露出来。呵呵 05/19 18:30
- [游客] 计算人均时,是DD型除以DW型。把DD型的最大值代进去,你的程序,就溢出了。 05/19 18:28
- [游客] 注意不溢出的除法。 05/19 18:25
- [游客] 老师好啊~ 06/28 11:01
- [longphui] 谢谢 09/03 20:10
- [longphui] 谢谢 09/03 16:23
- [longphui] 谢谢 09/02 15:26
- [longphui] 谢谢 09/02 09:13
- [sissim] 恩恩,谢谢指正 01/11 18:24
- [even3] 亲,你好。。。这边有一个汇编语言程序,但是就是不知道哪里出了问题,问了很多人,都不知道想麻烦您一下, 05/16 20:48
- [mcjfo] 楼主可以帮我解决这个问题吗?谢谢! 为什么它会跳过JMP DD 指令不执行啊 小弟搞了好久抖没 06/08 06:50