回 帖 发 新 帖 刷新版面

主题:摸不到门的问题

我刚学汇编,看了几集汇编的视频教程,昨天下载了一本书来看,名字叫《汇编语言程序设计自学教程》1995出版的。将书里面的例子输入masm32 9.0 中,project-->assemble &link 出现以下问题:

e:\exe\fir.asm<20>:error A2008: syntax error : c

e:\exe\fir.asm<31>:error A2008: syntax error : c

e:\exe\fir.asm<16>:error A2004: syntax type conflict

e:\exe\fir.asm<39>:error A4023:warning A4023:with /coff switch ,leading underscore required for start address : addem.

意思都明白就是不知道怎么解决。实在没有办法了,哪位好心人帮帮我这个新人。

程序如下:

;
; first.asm -A first assembly language program
;
;
;code segment
;
_TEXT segment word public 'CODE' ;代码段说明?segment word public 'CODE'
;指明是代码段,_TEXT 代码段名字
assume cs:_TEXT,ds:_DATA,ss:_STACK ;assume 假设;指定各段的名字。
;不需要指定代码段的名字?需要cs:_TEXT
;
;Add two 16 bit values
;
addem proc far ;Entry point from DOS !!addem 过程名字后面加proc 说明是过程,far表明是
;远程调用
mov ax,_DATA ;Point the data segment
mov ds,ax ;register to the data segment
mov ax,a ;AX=a
add ax,b ;AX=a+b
mov c,ax ;c=a+b
mov ax,4c00h ;ax=no error return code
int 21h ;return to DOS
addem endp
_TEXT ends ;必须使用吗??? 是,与前面的相对应
;
;Data segment 
;
_DATA segment word public 'DATA'
a dw 3
b dw 4
c dw ?
_DATA ends
;
;Stack segment
;
_STACK segment para stack 'STACK'
db 128 dup(?)
_STACK ends
end addem ;Defines the entry point

;;小结
;各段说明方式:segment word public 'CODE'; segment word public 'DATA';segment para stack 'STACK'
;各段结束方式为ends,过程结束方式为endp
;最后一句end addem 什么意思?addem为过程名字,前面已经用了endp

回复列表 (共3个回复)

沙发

谁写的程序啊!MASM中似乎不许使用'c'作为变量名,你把'c'改成别的!其他没仔细看,最好把数据段和堆栈段放代码段前头,编译时不要设置大小写敏感(/coff),可以产生清单文件查错(ml /Flfir.lst fir.asm)。tasm下编译链接没有问题!
最后一句规定了程序的入口就是addem过程——addem proc far ;Entry point from DOS !!

板凳


一个老外写的书.现在公司手上没有资料,回去后试以下.

最后还是没有看懂什么意思.不过不急,书看完应该懂了.

谢谢了.

3 楼

程序意图很简单,求出a+b之和并保存到c

我来回复

您尚未登录,请登录后再回复。点此登录或注册