永发信息网

汇编语言的一道题目,老是编译出错!!!请各位不吝赐教

答案:5  悬赏:80  手机版
解决时间 2021-03-03 12:55
  • 提问者网友:送舟行
  • 2021-03-03 03:33
DATA SEGMENT
NUM DB 82H,68H,88H
SUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET NUM
MOV BX,[BX]
INC BX
ADD AL,[BX]
INC BX
ADD AL,[BX]
MOV SUM,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START 错误如下
F:\EX11.asm(7) : error A2004: symbol type conflict
F:\EX11.asm(19) : warning A4023: with /coff switch, leading underscore required for start address : START
最佳答案
  • 五星知识达人网友:往事隔山水
  • 2021-03-03 04:15
用masm5.0编译没问题:
E:\masm1>masm t.asm
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.

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

50816 + 450496 Bytes symbol space free

0 Warning Errors
0 Severe Errors

E:\masm1>link t

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

Run File [T.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
LINK : warning L4021: no stack segment
全部回答
  • 1楼网友:几近狂妄
  • 2021-03-03 07:22
话说用的是什么编译器,是masm5吗?
  • 2楼网友:山有枢
  • 2021-03-03 06:11
a=8 b=8 c=10
  • 3楼网友:想偏头吻你
  • 2021-03-03 05:33
你用什么汇编程序啊? 我用masm5.0调试,程序没有错误啊。
  • 4楼网友:末日狂欢
  • 2021-03-03 04:31
DATA SEGMENT NUM DB 82H,68H,88H SUM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET NUM MOV BX,[BX];这一句出了问题,即使能够运行出来,那么结果也不对.,分析:[bx]中的值是6882h(并不是你认为的82h),因为bx是16位的寄存器,那么下一次[bx]中的值并不是你期待的68,或88h,bx是6882h,[6882]这个存储单元的值是多少,是不确定的... 即使是你认为的 82h,那么[82]这个存储单元的值也是不确定,并不是你认为的68h 所以你的这一句有2个错误,建议改成,MOV AL,[BX],但是光这样还是不够,下面会给出修改好的代码 INC BX ADD AL,[BX] INC BX ADD AL,[BX] MOV SUM,AL MOV AH,4CH INT 21H CODE ENDS END START 修改后的代码: DATA SEGMENT NUM DB 82H,68H,88H SUM DW ? ;为什么这样下面有解释... DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,0 ;这一行是增加的.. MOV BX,OFFSET NUM MOV AL,[BX] INC BX ADD AL,[BX] INC BX ADC AL,[BX];上一次相加可能产生进位.,要加上cf. MOV AH,0 ;若这一次相加产生进位,则送到AH中 MOV SUM,AX;因为有可能产生进位,所以需要用16位来表示相加的和,sum也应该用dw定义 MOV AH,4CH INT 21H CODE ENDS END START 其他的地方都没有问题,不过要在屏幕上输出结果,还需要增加代码,你的程序运行之后,结果,存放在sum中,你可以通过查看对应内存中的值,来获得三数相加的和...
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯