照书抄的程序编译出错,帮偶看看问题在哪儿?

qingqingliman 2008-07-26 10:55:24
照书清华IBM-PC那本书219页抄的程序编译出错,帮偶看看问题在哪儿?谢谢了

.model medium
.data
array dw 100 dup(?)
count dw 100
sum dw ?
.stack 200h
.code code1
main proc
start:
mov ax, @data
mov ds, ax

mov bx, offset array
push bx
mov bx, offset count
push bx
mov bx, offset sum
push bx
call proadd

mov ax, 4c00h
int 21h
main endp

.code code2
proadd proc pascal uses ax cx si di,
para:word,parc:word,pars:word

mov si, para
mov di, parc
mov cx, [di]
mov di, pars
xor ax, ax
next:
add ax, [si]
add si, 2
loop next

mov [di], ax
ret
proadd endp

end start


保持为Main.asm用MASM5编译出现:
D:\Masm5\Code>masm main.asm main.obj,main.lst,main.crf
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.

main.asm(16): error A2062: Missing or unreachable CS
main.asm(26): error A2071: Forward needs override or FAR
main.asm(33): error A2022: Operand must be type specifier
main.asm(34): error A2062: Missing or unreachable CS
main.asm(36): warning A4057: Illegal size for operand
main.asm(37): error A2009: Symbol not defined: PARC
main.asm(39): error A2009: Symbol not defined: PARS
main.asm(41): error A2062: Missing or unreachable CS

49604 + 416684 Bytes symbol space free

1 Warning Errors
7 Severe Errors

请问哪儿出错了?还是偶抄错了,谢谢~~
...全文
229 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhourenyun 2008-11-04
  • 打赏
  • 举报
回复
lz
请教个问题?
关于调试的输出信息你是如何让它显示出来的呢?
rimm2008 2008-11-04
  • 打赏
  • 举报
回复
小分享,最近小弟也在学习 Assembly,但发现不同的书,会使用不同的 Assembler,coding方法会有差別,甚至相互不支持。所以开发环境应尽量跟随书本,否则便会碰到难以理解的问题。
andylei_ok 2008-11-04
  • 打赏
  • 举报
回复
支持二楼
alan001 2008-07-27
  • 打赏
  • 举报
回复
.code去掉一个
BAYNPU 2008-07-26
  • 打赏
  • 举报
回复
在MASM6.15汇编可以通过:

.model medium
.data
array dw 100 dup(?)
count dw 100
sum dw ?
.stack 200h
.code code1
start:
main proc
mov ax, @data
mov ds, ax
mov bx, offset array
push bx
mov bx, offset count
push bx
mov bx, offset sum
push bx
call proadd
mov ax, 4c00h
int 21h
main endp
.code code2
proadd proc pascal uses ax cx si di,
para:word,parc:word,pars:word
mov si, para
mov di, parc
mov cx, [di]
mov di, pars
xor ax, ax
next:
add ax, [si]
add si, 2
loop next
mov [di], ax
ret
proadd endp
end start


紫郢剑侠 2008-07-26
  • 打赏
  • 举报
回复


proadd proc pascal uses ax cx si di,
para:word,parc:word,pars:word

改为:

proadd proc pascal uses ax cx si di para:word,parc:word,parc:word

其它的留给楼下的
cnzdgs 2008-07-26
  • 打赏
  • 举报
回复
段间调用改成:
call far ptr proadd
函数定义改成:
proadd proc far pascal……
最后结束改成:
end main
这样再试试。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧