2015-11-06 76 views
4

我是組裝中的一個begginer。 我試圖用MASM在屏幕上打印一封信。我定義堆棧段,但是當我試圖程序鏈接,得到了這樣的警告:MASM中沒有堆棧段警告

鏈接:警告L4021:沒有堆棧段

但是該程序工作正常! 我該如何解決這個問題?請用簡單的話來解釋。謝謝。

printa.asm:

stk segment 
    DW 32 dup(?) 
stk ends 
cds  segment 
    assume cs:cds,ss:stk 
    main proc far 
     mov ah,02 
     mov dl, 'A' 
     int 21h 

     mov ah,01 
     int 21h 

     mov ah,4ch 
     int 21h 
    main endp 
cds ends 
END main 

printa.lst:

Microsoft (R) Macro Assembler Version 6.00    11/06/15 09:38:16 
printa.asm       Page 1 - 1 


0000    stk segment 
0000 0020 [    DW 32 dup(?) 
     0000 
     ] 
0040    stk ends 
0000    cds  segment 
        assume cs:cds,ss:stk 
0000     main proc far 
0000 B4 02     mov ah,02 
0002 B2 41     mov dl, 'A' 
0004 CD 21     int 21h 

0006 B4 01     mov ah,01 
0008 CD 21     int 21h 

000A B4 4C     mov ah,4ch 
000C CD 21     int 21h 
000E     main endp 
000E    cds ends 
       END main 
Microsoft (R) Macro Assembler Version 6.00    11/06/15 09:38:16 
printa.asm       Symbols 2 - 1 




Segments and Groups: 

       N a m e     Size  Length Align Combine Class 

cds . . . . . . . . . . . . . . 16 Bit 000E  Para Private 
stk . . . . . . . . . . . . . . 16 Bit 0040  Para Private 


Procedures, parameters and locals: 

       N a m e     Type  Value Attr 

main . . . . . . . . . . . . . . P Far 0000  cds Length= 000E Private 

     0 Warnings 
     0 Errors 
+0

代替'stk segment',嘗試'STACK SEGMENT STACK USE16',然後在'assume'列表中選擇'ss:STACK'。 – Michael

回答

3

我找到了解決辦法。 我們需要爲堆棧段定義「組合類型」。

stk segment 

應該是:

stk segment stack 

唯一的結合,對堆棧段的工作原理是 「堆棧」 的類型。

+0

在masm中完美運作 –