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

📄 x86rtl.asm

📁 浙江大学编译原理课程设计源代码,高等院校计算机专业
💻 ASM
字号:
.MODEL small_DATA   segment public		db      512 dup(?)_DATA ends		_TEXT   segment publicchar_cr   equ  0dhchar_lf   equ  0ah_write_int  proc  near		assume  cs:_TEXT,ds:_DATA		mov     ax,_DATA		mov     ds,ax		push     bp		mov      bp,sp		mov      ax,word ptr [bp + 6]		cmp		ax, 0		jge		k_positive		neg		ax		push	ax		mov		ah,2		mov		dl,'-'		int		21h		pop		axk_positive:				mov      bx,0		mov       cx,10000		xor        dx,dx		idiv        cx		push        dx		cmp        ax,0		je          k_d1000		mov         bx,1		xor          dh,dh		mov         dl, '0'		add          dl, al		mov          ah,2		int            21hk_d1000:       pop          ax		mov          cx,1000		xor           dx,dx		idiv          cx		push          dx		cmp          ax,0		je            mst_1000		mov        bx,1mst_1000:   cmp         bx,0		je          k_d100		xor         dh,dh		mov        dl, '0'		add         dl, al		mov         ah,2		int           21hk_d100:   pop         ax		mov         cx,100		xor          dx,dx		idiv          cx		push         dx		cmp          ax,0		je           mst_100		mov          bx,1mst_100:    cmp          bx,0		je            k_d10		xor           dh,dh		mov          dl, '0'		add           dl,al		mov          ah,2		int            21hk_d10:      pop          ax		mov 		cx, 10		xor			dx,dx		idiv		cx		push		dx		cmp			ax, 0		je			mst_10		mov 		bx, 1mst_10:    cmp          bx,0		je            k_d1		xor           dh,dh		mov          dl, '0'		add           dl,al		mov          ah,2		int            21hk_d1:      pop          ax		mov          dl, '0'		add           dl,al		mov          ah,2		int            21h		mov           sp,bp		pop            bp		ret             4_write_int   endp_write_string   proc   near		assume   cs:_TEXT,ds:_DATA		mov     ax,_DATA		mov     ds,ax		push     bp		mov      bp,sp		mov      dx,word ptr [bp+6]		mov      ah,9		int      21h		mov      sp,bp		pop       bp		ret        4_write_string    endp_writeln_int     proc  near		assume  cs:_TEXT,ds:_DATA		mov     ax,_DATA		mov     ds,ax		push     bp		mov      bp,sp		mov      ax,word ptr [bp + 6]		cmp		ax, 0		jge		w_positive		neg		ax		push	ax		mov		ah,2		mov		dl,'-'		int		21h		pop		axw_positive:				mov      bx,0		mov       cx,10000		xor        dx,dx		idiv        cx		push        dx		cmp        ax,0		je          w_d1000		mov         bx,1		xor          dh,dh		mov         dl, '0'		add          dl, al		mov          ah,2		int            21hw_d1000:       pop          ax		mov          cx,1000		xor           dx,dx		idiv          cx		push          dx		cmp          ax,0		je            tst_1000		mov        bx,1tst_1000:   cmp         bx,0		je          w_d100		xor         dh,dh		mov        dl, '0'		add         dl, al		mov         ah,2		int           21hw_d100:   pop         ax		mov         cx,100		xor          dx,dx		idiv          cx		push         dx		cmp          ax,0		je           tst_100		mov          bx,1tst_100:    cmp          bx,0		je            w_d10		xor           dh,dh		mov          dl, '0'		add           dl,al		mov          ah,2		int            21hw_d10:      pop          ax		mov 		cx, 10		xor			dx,dx		idiv		cx		push		dx		cmp			ax, 0		je			tst_10		mov 		bx, 1tst_10:    cmp          bx,0		je            w_d1		xor           dh,dh		mov          dl, '0'		add           dl,al		mov          ah,2		int            21hw_d1:      pop          ax		mov          dl, '0'		add           dl,al		mov          ah,2		int            21h		mov           ah,2		mov           dl,char_cr		int             21h		mov            dl,char_lf		int             21h		mov            sp,bp		pop             bp		ret              4_writeln_int         endp_writeln_string proc       near		assume        cs:_TEXT,	ds:_DATA		mov          ax,_DATA		mov     ds,ax		push     bp		mov     bp,sp		mov     dx,word ptr [bp+6]		mov      ah,9		int       21h		mov      ah,2		mov      dl,char_cr		int 	21h		mov		dl, char_lf		int		21h		mov      sp,bp		pop       bp		ret        4_writeln_string  endp_read_char   proc    near		assume    cs:_TEXT,ds:_DATA		mov      ax,_DATA		mov      ds,ax		push      bp		mov      bp,sp		mov		ah, 1		int		21h		xor		ah, ah		mov      bx, word ptr [bp+6]		mov		[bx], ax		mov		sp, bp		pop		bp		ret 4_read_char endp_read_string	proc	near		assume	cs:_TEXT, ds:_DATA		mov		ax, _DATA		mov		ds, ax		push	bp		mov		bp, sp		mov		bx, word ptr [bp + 6]		mov      cx,0		mov      ah,1_rd_start:		int        21h		inc        cx		cmp       al,char_cr		je         _rd_out		cmp       al,char_lf		je         _rd_out		mov       [bx],ax		inc        bx		jmp        _rd_start_rd_out:		mov       ax, '$'		mov       [bx],ax		mov       ah,2		mov       dl,char_cr		int         21h		mov        dl,char_lf		int          21h		mov         sp,bp		pop          bp		ret           4_read_string        endp_read_int    proc        near		assume      cs:_TEXT,ds:_DATA		mov        ax,_DATA		mov        ds,ax		push        bp		mov       bp,sp		mov       bx,10		mov       dx,0		mov       cx,0_ri_start:		mov       ah,1		int         21h		cmp        al,char_cr		je          _ri_out		cmp        al,char_lf		je          _ri_out		cmp        al, '0'		jl          _ri_out		cmp        al, '9'		jg         _ri_out		sub        al, '0'		xor         ah,ah		push        ax		mov        ax,cx		imul        bx		mov        cx,ax		pop         ax		add         cx,ax		jmp         _ri_start_ri_out:		mov        bx,word ptr [bp+6]		mov        [bx],cx		mov        ah,2		mov        dl,char_cr		int          21h		mov			dl, char_lf		int			21h		mov         sp,bp		pop          bp		ret           4_read_int	endp_abs_int   proc       near		assume     cs:_TEXT,ds:_DATA		mov        ds,ax		push        bp		mov          bp,sp		mov         ax,word ptr [bp+6]		cmp         ax,0		jg           abs_out		neg          ax abs_out:		;mov      word ptr [bp+6],ax		mov      sp,bp		pop       bp		ret        4_abs_int        endp_sqr_int        proc       near		assume     cs:_TEXT,ds:_DATA		mov        ax, _DATA		mov        ds,ax		push        bp		mov        bp,sp		mov        ax,word ptr [bp+6]		mov        cx,ax		imul        cx		;mov        word ptr [bp+6],ax		mov        sp,bp		pop         bp		ret          4_sqr_int         endp_odd_int        proc       near		assume     cs:_TEXT,ds:_DATA		mov        ax,_DATA		mov        ds,ax		push        bp		mov        bp,sp		mov        ax, word ptr [bp + 6]		and         ax,1		;mov        word ptr [bp + 6],ax		mov         sp,bp		pop          bp		ret           4_odd_int     endp		_sqrt_int     proc            near		assume          cs:_TEXT,ds:_DATA		mov				ax, _DATA		mov             ds,ax		push             bp		mov				bp,sp		mov             ax,word ptr [bp+6]		mov             cx,0		mov             dx,1sssb:		sub             ax,dx		cmp             ax,0		jl               srt_out		inc             cx		add            dx,2		jmp            sssbsrt_out:		mov            ax, cx		mov            sp, bp		pop             bp		ret              4_sqrt_int     endp		_TEXT      ends		public _write_int		public _writeln_int		public _write_string		public _writeln_string		public _read_char		public _read_string		public _read_int		public _abs_int		public _sqr_int		public _odd_int		public _sqrt_int		end

⌨️ 快捷键说明

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