📄 x86rtl.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 + -