2013-02-14 128 views
0

我想了解給定例子的x86彙編語言。你能給我一些關於這段代碼的建議嗎?代碼不是我的,但評論是。學習x86彙編語言。需要一些說明

bits 16   ; what this means? 

org 100h   ; what this means? 

section .bss  ; section for data 
tekst resb50  ; variable tekst type resb50 

section .text ; main application instructions 

    mov SI,tekst ; copy value of tekst to SI. What value contains 'tekst'? 
et1:    ; label et1 
    mov AH,01h ; interrupt for read input 
    int 21h  ; call interrupt 
    mov [SI],AL ; copy AL to [SI]. Why AL? Why square brackets? 
    cmp AL,'0' ; compare AL data with '0' 
    je petla  ; if equal jump to petla 
    inc SI  ; increment SI 
    jmp et1  ; jump et1 
    mov AH,'w' ; copy 'w' to AH 
    mov SI,tekst ; copy tekst to SI. 
petla: 
    cmp byte [SI], '0' ; compare '0' with [SI] data 
    je et3    ; if equal jump et3 
    cmp AH,[SI]  ; compare [SI] data with AH 
    je et2    ; if qual jump et2 
    inc SI 
    jmp petla   ; jump to petla 

我對上述評論有錯嗎?

+0

'tekst resb 50' =在你的情況下保留一個包含size字節的內存塊,50嗎? – 2013-02-14 14:06:24

回答

1

bits and org are directives for the compiler。

  • bits設置的代碼的味道,以產生(16位和32位的命令不同一點即使是相同的操作數)

  • org 100h告訴編譯器跳過256個字節所得到的圖像中。這可能是一個COM file源文件 - 在COM文件中,唯一段的前256個字節被一個頭佔用,因此需要該指令。

一般來說,學習彙編,最好是閱讀一本書上實模式之一 - 將由OS解釋通用CPU架構和運作,以及可執行文件的內部結構和操作。我只能用我的俄羅斯本土推薦。