Table: All editor code files have been added from the flash drive.
The start date of development is September 12, 2024.
This commit is contained in:
98
SYSTEM/ASM_FUNC.ASM
Normal file
98
SYSTEM/ASM_FUNC.ASM
Normal file
@@ -0,0 +1,98 @@
|
||||
|
||||
format ELF
|
||||
|
||||
|
||||
;==============================
|
||||
;public argc as '__argc' - no needed for tiny app
|
||||
public num2cell_num as 'num2cell_num'
|
||||
public cell_num2num as 'cell_num2num'
|
||||
public cell_num_chars as 'cell_num_chars'
|
||||
|
||||
section '.text'
|
||||
|
||||
; IN: arg0 = num
|
||||
; arg1 - ptr buffer(12 chars)
|
||||
; OUT: -
|
||||
num2cell_num:
|
||||
; 26 = 11010b = Z
|
||||
; AA = 27 = 11011b
|
||||
;
|
||||
; dec: 11010b = AA
|
||||
; 11010b*26 = 1010100100b = AAA
|
||||
; X2 = 10101001000b = ABA
|
||||
; X3 = 11111101100b = ACA
|
||||
; X4 = 101010010000b = ADA
|
||||
; = 110100110100b = AEA
|
||||
;
|
||||
; ;dec num
|
||||
;.loop:
|
||||
;
|
||||
; ; copy stack in buffer
|
||||
;
|
||||
push ebx edi ebp
|
||||
mov ebp, esp
|
||||
|
||||
mov eax, dword [esp + 4*3 + 4]
|
||||
dec eax
|
||||
.cycle:
|
||||
xor ecx, ecx
|
||||
mov edx, 1 shl 27
|
||||
mov ebx, 26 shl 27
|
||||
|
||||
.shift:
|
||||
cmp eax, ebx
|
||||
jb @F
|
||||
sub eax, ebx
|
||||
or ecx, edx
|
||||
@@:
|
||||
shr ebx, 1
|
||||
shr edx, 1
|
||||
jnz .shift
|
||||
|
||||
add al,'A'
|
||||
dec esp
|
||||
mov byte [esp],al
|
||||
|
||||
mov eax,ecx
|
||||
test eax,eax
|
||||
lea eax,[eax-1]
|
||||
jnz .cycle
|
||||
|
||||
mov edi, [ebp + 4*3 + 8]
|
||||
@@:
|
||||
cmp esp, ebp
|
||||
je @f
|
||||
|
||||
mov al, byte[esp]
|
||||
stosb
|
||||
inc esp
|
||||
jmp @b
|
||||
@@:
|
||||
xor eax, eax
|
||||
stosb
|
||||
pop ebp edi ebx
|
||||
ret 8
|
||||
|
||||
; IN: arg0 = ptr to string of number
|
||||
; OUT: eax - number or null
|
||||
cell_num2num:
|
||||
|
||||
.loop:
|
||||
|
||||
;cmp , 0
|
||||
;jne .loop
|
||||
;inc old
|
||||
; mul 26
|
||||
|
||||
ret 4
|
||||
|
||||
; AA = (1*26 + 0 ) + 1 -1
|
||||
|
||||
; AAA =
|
||||
; A = 1
|
||||
|
||||
;section '.data'
|
||||
; dec 01234567890123456789012345
|
||||
; 12345678901234567890123456
|
||||
cell_num_chars: db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
.size = $ - cell_num_chars
|
Reference in New Issue
Block a user