標題:

[組合語言]使用 MASM 6.11 組譯時會出現錯誤訊息

發問:格蘭英語分校查詢

輸入ml exam01.asm後會出現下列兩行錯誤訊息exam01.asm<2>: error A2210: 16 bit segments not allowed with /coff optionexam01.asm<8>: error A2004: symbol type conflict使得原始碼無法組譯原始碼如下:;*************************************** ;01code segment ;02.code 段開始位址 assume ... 顯示更多 輸入ml exam01.asm後會出現下列兩行錯誤訊息 exam01.asm<2>: error A2210: 16 bit segments not allowed with /coff option exam01.asm<8>: error A2004: symbol type conflict 使得原始碼無法組譯 原始碼如下: ;*************************************** ;01 code segment ;02.code 段開始位址 assume cs:code,ds:code ;03.假設程式段及資料段 org 100h ;04.可改成 *.COM 檔 ;--------------------------------------- ;05. start: jmp begin ;06.程式進入點 mes db 'Hi, I learn assembly.$' ;07.要印出的訊息 begin: mov dx,offset mes ;08.指向 mes 的位址 mov ah,9 ;09.指定要呼叫的服務號碼 int 21h ;10.呼叫 DOS 服務程式 mov ax,4c00h ;11.指定要呼叫的服務號碼 int 21h ;12.呼叫 DOS 服務程式 ;--------------------------------------- ;13. code ends ;14.code 段結束 ;*************************************** ;15. end start ;16.使組譯器知道程式進入點 不知道是不是跟小弟的CPU有關? AMD Athlon(tm) 64 Processor 3000+ 更新: 那如果我要組譯成.exe檔該如何更改? 可以解釋一下錯誤訊息是什麼意思嗎?我看不懂>"<

最佳解答:book 翻譯

好久好久以前的技術了,以下全憑記憶,錯誤難免,還請高人指正!COM檔已是非常久以前的命令檔標準了!現在除了Windows內建提供的命令外,其它公司或個人已經沒有再見過COM的命令檔了!記憶中其記憶體模式一定是tiny,也就是一開始就宣告.model tiny。而且其回到DOS的方式也不需使用int 21h ,而是直接ret。當其asm完成、組譯成obj、再link成exe後,必需再使用exe2bin方式作成com檔。 2006-09-30 12:44:15 補充: 參考看看,有誤請指正!.model small.codemov ax.@datamov ds,axmov dx,offset mes ;08.指向 mes 的位址mov ah,9 ;09.指定要呼叫的服務號碼int 21h ;10.呼叫 DOS 服務程式mov ax,4c00h ;11.指定要呼叫的服務號碼int 21h ;12.呼叫 DOS 服務程式.datames db 'Hi, I learn assembly.$' ;07.要印出的訊息.stackend main

其他解答台中科技大學附設空中學院:1EBB3DED973BE8E3
arrow
arrow

    方郁婷過掃隘催拓 發表在 痞客邦 留言(0) 人氣()