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

📄 io.asm

📁 一个小型的c语言编译器,做的非常好,不过不是我做的.
💻 ASM
字号:
;
; C Compiler
;
; 80x86 Runtime Library
;
;

_TEXT           segment public

;----------------------------------------------------------------------
func_putint      proc    near            ;put integer number
				assume  cs:_TEXT
				push    bp
				mov     bp,sp
				push    ax
				push    cx
				push    bx
				push    dx

				mov     ax,word ptr [bp+4];load
				mov     bx,0

				mov     cx,10000;divide
				xor     dx,dx
				idiv    cx      ; ax = dx:ax/cx
								; dx = dx:ax%cx
				push    dx

				cmp     ax,0
				je      k_d1000
				mov     bx,1

				xor     dh,dh   ;display
				mov     dl,'0'
				add     dl,al   ; dl = al+'0'
				mov     ah,2
				int     21h     ; display

k_d1000:        pop     ax      ;divide 1000
				mov     cx,1000
				xor     dx,dx
				idiv    cx
				push    dx

				cmp     ax,0
				je      mst_1000
				mov     bx,1
mst_1000:       cmp     bx,0
				je      k_d100
                xor     dh,dh   ;display
                mov     dl,'0'
                add     dl,al
                mov     ah,2
                int     21h

k_d100:         pop     ax      ;divide 100
                mov     cx,100
				xor     dx,dx
                idiv    cx
                push    dx

                cmp     ax,0
                je      mst_100
                mov     bx,1
mst_100:        cmp     bx,0
                je      k_d10
                xor     dh,dh   ;display
				mov     dl,'0'
				add     dl,al
                mov     ah,2
                int     21h

k_d10:          pop     ax      ;divide 10
                mov     cx,10
                xor     dx,dx
				idiv    cx
                push    dx


                cmp     ax,0
                je      mst_10
                mov     bx,1
mst_10:         cmp     bx,0
                je      k_d1
				xor     dh,dh   ;display
                mov     dl,'0'
                add     dl,al
				mov     ah,2
				int     21h

k_d1:           pop     ax      ;last digit
				mov     dl,'0'
				add     dl,al
				mov     ah,2
				int     21h

				pop     dx
				pop     bx
				pop     cx
				pop     ax
				mov     sp,bp
				pop     bp
				ret
func_putint      endp

;----------------------------------------------------------------------
func_putchar      proc    near            ;put char in screen
				assume  cs:_TEXT
				push    bp
				mov     bp,sp
				push    ax
				push    cx
				push    bx
				push    dx

				mov     dl,byte ptr [bp+4];load
				mov     ah,2
				int     21h     ; display

				pop     dx
				pop     bx
				pop     cx
				pop     ax
				mov     sp,bp
				pop     bp
				ret
func_putchar      endp

;-----------------------------------------------------------------------
func_getch      proc    near            ;read a character
				assume  cs:_TEXT
				push    bp
				mov     bp,sp

				mov     ah,8                    ;read
				int     21h
				xor     ah,ah

				mov     sp,bp
				pop     bp
				ret
func_getch      endp

;-----------------------------------------------------------------------
func_getche     proc    near            ;read a character
				assume  cs:_TEXT
				push    bp
				mov     bp,sp

				mov     ah,1                    ;read
				int     21h
				xor     ah,ah

				mov     sp,bp
				pop     bp
				ret
func_getche     endp
_TEXT           ends

				public func_putint
				public func_putchar
				public func_getch
				public func_getche
				end

⌨️ 快捷键说明

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