请求汇编高手帮我解决个问题,我自己设计了个程序,可是在DEBUG的时候总是找不到EXE文件
程序的题目如下:ABC三个单元中分别放着一个树,。如果三个都不是0,就把3个数的和家起来存在D里面。如果有一个是0,就把其他2个都请0。我的程序如下:参考着答案写的:da...
程序的题目如下:A B C三个单元中分别放着一个树,。如果三个都不是0,就把3个数的和家起来存在D里面。如果有一个是0,就把其他2个都请0。
我的程序如下:参考着答案写的:
data segment
a db 8
b db 1
c db 1
d db ?
data ends
code segment
assume cs:code,ds:data
start: push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
mov al,a
cmp al,00H
jz next
mov al,b
cmp al,00H
jz next
mov al,c
cmp al,00H
jz next
mov al,a
add al,b
add al,c
mov d,al
jmp next1
next: mov a,00H
mov b,00H
mov c,00H
next1: mov ah,4CH
int 21H
code ends
end start
这个程序编译可以通过,就是无法生成EXE文件,无法DEBUG,请大神指教 展开
我的程序如下:参考着答案写的:
data segment
a db 8
b db 1
c db 1
d db ?
data ends
code segment
assume cs:code,ds:data
start: push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
mov al,a
cmp al,00H
jz next
mov al,b
cmp al,00H
jz next
mov al,c
cmp al,00H
jz next
mov al,a
add al,b
add al,c
mov d,al
jmp next1
next: mov a,00H
mov b,00H
mov c,00H
next1: mov ah,4CH
int 21H
code ends
end start
这个程序编译可以通过,就是无法生成EXE文件,无法DEBUG,请大神指教 展开
4个回答
展开全部
你的程序没有任何问题。(用MASM5.0编译)
E:\masm1>masm t0607.asm
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
Object filename [t0607.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
50872 + 450440 Bytes symbol space free
0 Warning Errors
0 Severe Errors
E:\masm1>link t0607
Microsoft (R) Overlay Linker Version 3.60
Copyright (C) Microsoft Corp 1983-1987. All rights reserved.
Run File [T0607.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
LINK : warning L4021: no stack segment
E:\masm1>dir t0607.*
Volume in drive E is DISK1_VOL3
Volume Serial Number is 6E41-CA4C
Directory of E:\masm1
2011-06-07 15:02 958 t0607.asm
2011-06-07 15:08 225 T0607.OBJ
2011-06-07 15:09 594 T0607.EXE
3 File(s) 1,777 bytes
0 Dir(s) 11,552,940,032 bytes free
E:\masm1>debug t0607.exe
-u
0B54:0000 1E PUSH DS
0B54:0001 33C0 XOR AX,AX
0B54:0003 50 PUSH AX
0B54:0004 B8530B MOV AX,0B53
0B54:0007 8ED8 MOV DS,AX
0B54:0009 A00000 MOV AL,[0000]
0B54:000C 3C00 CMP AL,00
0B54:000E 741F JZ 002F
0B54:0010 A00100 MOV AL,[0001]
0B54:0013 3C00 CMP AL,00
0B54:0015 7418 JZ 002F
0B54:0017 A00200 MOV AL,[0002]
0B54:001A 3C00 CMP AL,00
0B54:001C 7411 JZ 002F
0B54:001E A00000 MOV AL,[0000]
-u
0B54:0021 02060100 ADD AL,[0001]
0B54:0025 02060200 ADD AL,[0002]
0B54:0029 A20300 MOV [0003],AL
0B54:002C EB10 JMP 003E
0B54:002E 90 NOP
0B54:002F C606000000 MOV BYTE PTR [0000],00
0B54:0034 C606010000 MOV BYTE PTR [0001],00
0B54:0039 C606020000 MOV BYTE PTR [0002],00
0B54:003E B44C MOV AH,4C
0B54:0040 CD21 INT 21
-g003e
AX=0B0A BX=0000 CX=0052 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000
DS=0B53 ES=0B43 SS=0B53 CS=0B54 IP=003E NV UP EI PL NZ NA PE NC
0B54:003E B44C MOV AH,4C
-d0 l20
0B53:0000 08 01 01 0A 00 00 00 00-00 00 00 00 00 00 00 00 ................
0B53:0010 1E 33 C0 50 B8 53 0B 8E-D8 A0 00 00 3C 00 74 1F .3.P.S......<.t.
-
E:\masm1>masm t0607.asm
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
Object filename [t0607.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
50872 + 450440 Bytes symbol space free
0 Warning Errors
0 Severe Errors
E:\masm1>link t0607
Microsoft (R) Overlay Linker Version 3.60
Copyright (C) Microsoft Corp 1983-1987. All rights reserved.
Run File [T0607.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
LINK : warning L4021: no stack segment
E:\masm1>dir t0607.*
Volume in drive E is DISK1_VOL3
Volume Serial Number is 6E41-CA4C
Directory of E:\masm1
2011-06-07 15:02 958 t0607.asm
2011-06-07 15:08 225 T0607.OBJ
2011-06-07 15:09 594 T0607.EXE
3 File(s) 1,777 bytes
0 Dir(s) 11,552,940,032 bytes free
E:\masm1>debug t0607.exe
-u
0B54:0000 1E PUSH DS
0B54:0001 33C0 XOR AX,AX
0B54:0003 50 PUSH AX
0B54:0004 B8530B MOV AX,0B53
0B54:0007 8ED8 MOV DS,AX
0B54:0009 A00000 MOV AL,[0000]
0B54:000C 3C00 CMP AL,00
0B54:000E 741F JZ 002F
0B54:0010 A00100 MOV AL,[0001]
0B54:0013 3C00 CMP AL,00
0B54:0015 7418 JZ 002F
0B54:0017 A00200 MOV AL,[0002]
0B54:001A 3C00 CMP AL,00
0B54:001C 7411 JZ 002F
0B54:001E A00000 MOV AL,[0000]
-u
0B54:0021 02060100 ADD AL,[0001]
0B54:0025 02060200 ADD AL,[0002]
0B54:0029 A20300 MOV [0003],AL
0B54:002C EB10 JMP 003E
0B54:002E 90 NOP
0B54:002F C606000000 MOV BYTE PTR [0000],00
0B54:0034 C606010000 MOV BYTE PTR [0001],00
0B54:0039 C606020000 MOV BYTE PTR [0002],00
0B54:003E B44C MOV AH,4C
0B54:0040 CD21 INT 21
-g003e
AX=0B0A BX=0000 CX=0052 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000
DS=0B53 ES=0B43 SS=0B53 CS=0B54 IP=003E NV UP EI PL NZ NA PE NC
0B54:003E B44C MOV AH,4C
-d0 l20
0B53:0000 08 01 01 0A 00 00 00 00-00 00 00 00 00 00 00 00 ................
0B53:0010 1E 33 C0 50 B8 53 0B 8E-D8 A0 00 00 3C 00 74 1F .3.P.S......<.t.
-
展开全部
一般是不会的,因为你的汇编程序是受操作系统监视的,即使有违法操作,操作系统也会强制程序运行,保护系统。你可以用操作系统留给你的一段安全空间随意编程。此安全空间一般为0:200到:2ff。
追问
可是我的的确是这个样子啊,LINK的时候出现了ERROR,你帮我调试下看看撒
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译通过 ???
c这个字母貌似是不能被定义的吧
c这个字母貌似是不能被定义的吧
追问
是不是把C换掉就可以了?
追答
这样应该就可以了,c是汇编和C++接口时会用(老师貌似是这么讲的)
我也是个学生,不敢肯定
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C 不是PSW中的Cy吗~不能这么用吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询