⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 end.asm

📁 menuet os应用程序源代码,很多汇编写的应用程序
💻 ASM
字号:
;
;    END
;
;    Ok, this is the sceleton that MENUET 0.38 understands.
;    Do not change the header bits for now. Compile with fasm.
;
   
use32
   
              org     0x0
              db      'MENUET00'              ; 8 byte id
              dd      38                      ; required os
              dd      START                   ; program start
              dd      I_END                   ; program image end
              dd      0x100000                ; reguired amount of memory
              dd      0x00000000              ; reserved=no extended header
   
   
START:
   
    call  draw_window
   
still:
   
    mov  eax,10                 ; wait here for event
    int  0x40
   
    cmp  eax,1
    jz   red
    cmp  eax,2
    jz   key
    cmp  eax,3
    jz   button
   
    jmp  still
   
  red:
    call draw_window
    jmp  still
   
  key:
    mov  eax,2
    int  0x40
   
    jmp  still
   
  button:
   
    mov  eax,17
    int  0x40
   
    cmp  ah,1
    jz   boot
   
    mov  eax,0xffffffff ; close this program
    int  0x40
   
    ; end of program
   
  boot:
   
    mov  eax,18    ; system boot
    mov  ebx,1
    int  0x40
   
    mov  eax,0xffffffff ; close this program
    int  0x40
   
   
draw_window:
   
    pusha
   
    mov  eax,48
    mov  ebx,3
    mov  ecx,I_END
    mov  edx,40
    int  0x40
   
    mov  eax,12                    ; tell os about redraw start
    mov  ebx,1
    int  0x40
   
    mov  eax,14                    ; get screen max x & max y
    int  0x40
   
    shr  eax,17
    sub  eax,78
    shl  eax,16
    mov  ebx,eax
    add  ebx,150
   
    mov  eax,0                     ; define and draw window
    mov  ecx,200*65536+65
     mov  edx,[I_END+24]
     mov  esi,[I_END+24]
    mov  edi,0x00ffffff
    int  0x40
   
    mov  eax,8
    mov  ebx,15*65536+55           ; button start x & size
    mov  ecx,40*65536+12           ; button start y & size
    mov  edx,1                     ; button number
    mov  esi,[I_END+24]           ; button color
    int  0x40
   
    mov  eax,8
    mov  ebx,80*65536+55           ; button start x & size
    mov  ecx,40*65536+12           ; button start y & size
    mov  edx,2                     ; button number
    mov  esi,[I_END+24]           ; button color
    int  0x40
   
   
    mov  eax,dword 0x00000004      ; 0x00000004 = write text
    mov  ebx,17*65536+15
    mov  ecx,dword 0x00ffffff      ; 8b window nro - RR GG BB color
    mov  edx,label1                ; pointer to text beginning
    mov  esi,labellen1-label1      ; text length
    int  0x40
   
    mov  eax,dword 0x00000004      ; 0x00000004 = write text
    mov  ebx,14*65536+42
    mov  ecx,dword 0x00ffffff      ; 8b window nro - RR GG BB color
    mov  edx,label2                ; pointer to text beginning
    mov  esi,labellen2-label2      ; text length
    int  0x40
   
    mov  eax,12                    ; tell os about redraw end
    mov  ebx,2
    int  0x40
   
    popa
   
    ret
   
label1:
     db   '     EXIT MENUET     '
labellen1:
   
label2:
    db   '    OK       CANCEL   '
labellen2:
   
   
I_END:
   
   
   
   
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -