asm

47 отговора 1705 прегледа
в отговор на Гeнчo #21

Re: Ето ти работеща...

Браво Генчо!!!

Айде сега виждам, че скучаеш, напиши и програмче дето прави същото, ама с int 10h

Пиркс

Отговор
в отговор на hoopla #22

Re: То верно

че се разлютих , да извиняваш.

void
void declarator

When used as a function return type, the void keyword specifies that the function does not return a value. When used for a function's parameter list, void specifies that the function takes no parameters. When used in the declaration of a pointer, void specifies that the pointer is "universal."

If a pointer's type is void *, the pointer can point to any variable that is not declared with the const or volatile keyword. A void pointer cannot be dereferenced unless it is cast to another type. A void pointer can be converted into any other type of data pointer.

A void pointer can point to a function, but not to a class member in C++.

You cannot declare a variable of type void.

Example

// Examples of the void keyword
void vobject; // Error
void *pv; // Okay
int *pint; int i;
void main() // main has no return value
{
pv = &i;
pint = (int *)pv; // Cast optional in C
// required in C++
}

Отговор
в отговор на Cabel #23

Neka i az da se izhuwrlja....


.section .rodata.str1.1,"aMS",@progbits,1
helloWorldString:
.string "'hello, world'"

.text
.align 2
.p2align 2,,3
.globl main
.type main,@function
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
subl $12, %esp
pushl $helloWorldString
call puts
leave
ret


Credits:
gcc 3.2 - w roljata na compilator
-O3 -S - w roljata na optzii kum kompilatora

Drugi varianta na scenata:
cl 6.00/7.00 - sushto w roljata na compilator
-FEsc - w podobna rolja na optzii kum kompilatora

Dobavete i drugi - neka stane taka interesno, kakto nikoga dosega ne e bilo!
Ne na disasembliraneto! Mir na praha na IBM/360!

tirulirutatuutuu
Отговор
в отговор на malkia #24

Re: Neka i az da se izhuwrlja....

Бррреййй - 32-битов асемблер, с викане на puts()! Браво - ученото си е учено!

(Е, не съм го пробвал програмчето ти - вЕрвам ти!)

Пиркс

Отговор
в отговор на pyrx #25

Re: Neka i az da se izhuwrlja....

Kogato ot dva konja ostane samo edin,
Ne mu misli - wpregni go i turchi!

tirulirutatuutuu
Отговор
в отговор на Гeнчo #26

Re: Ето ти работеща...

ама аз не искам да печатам хело уърлд, ами "Show me the $$$ money"

комплексиран... като баба ти!!!
Отговор
в отговор на Meндeлeeв #27

Re: Ето ти работеща...

> ама аз не искам да печатам хело уърлд, ами "Show me the $$$ money"

Ами айде де, почвай да пишеш програмата! Какво чакаш още!?
Така и ние може да намажем нещичко покрай теб.

Пиркс

Отговор
в отговор на Heпитaщ #28

Re: Готово

А защо не пробваш така :

CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE, SS:CODE
ORG 100H ; .COM file
BEGIN:
MOV AH, 9 ; <==> printf ("%s", MSG)
LEA BX, MSG ;
PUSH CS ;
POP ES ;
INT 21H ;

MOV AX, 4C00H ; <=> return 0 в С
INT 21H ;
MSG DB "Hello world!", 10, 13, '$'
CODE ENDS
END BEGIN

Поне ще можеш да го компилираш нормално

Отговор
в отговор на David #29

Re: Готово

Oupsssssss, малка грешка ... Ето това ще работи:
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE, SS:CODE
ORG 100H ; .COM file
BEGIN:
MOV AH, 9 ; <==> printf ("%s", MSG)
LEA DX, MSG ;
PUSH CS ;
POP DS ;
INT 21H ;

MOV AX, 4C00H ; <=> return 0 в С
INT 21H ;
MSG DB "Hello world!", 10, 13, '$'
CODE ENDS
END BEGIN


... и се научете да излизате нормално с AX=4C00h, а не с разни чекии от рода AH=4Ch ... Така не връщате код на завършване ...

Отговор
в отговор на Meндeлeeв #30

Re: Ето ти работеща...

За визуализация на парите може да ползуваш някой готов графичен пакет :))

Отговор
в отговор на Гeнчo #31

ee... kvi sa tia slojnotii????

pushas DEBIG
posle pises:

A
MOV AH,9
MOV DX,108
INT 21
RET
E108 'HELLO TRALALA$'
RCX
16
NA.COM
W
Q


pri koeot polucavas programata A.COM

Отговор
в отговор на Heпитaщ #32

Re: То верно

А въобще в С има ли void?

Аз съм!
Отговор
в отговор на a3 #33

Re: То верно

chetoh skoro che ima.

tirulirutatuutuu
Отговор
в отговор на Cabel #34

Re: asm

А някой знае ли за Windows как ще стане?


Аз съм!
Отговор
в отговор на a3 #35

Re: То верно

> А въобще в С има ли void?

Предполагам се майтапиш, или си се крил в гората, понеже не си знаел, че войната е свършила, но void е едно от нещата, влезли в C от C++.

Готвех се да обясня на Непитащия, че main никога не е била void, дори в първото издание на K&R, където main е без тип. Това е защото по подразбиране типът е int. Щях да го насоча и към comp.lang.c FAQ, ама той не иска акъл, той смята, че е дорасъл да дава акъл.

Отговор
в отговор на malkia #36

Re: Neka i az da se izhuwrlja....


# -- Machine type IA32
# mark_description "Intel(R) C++ Compiler for 32-bit applications, Version 6.0.1 Build 20020822Z";
# mark_description "-long_double -S";
.ident "Intel(R) C++ Compiler for 32-bit applications, Version 6.0.1 Build 20020822Z"
.ident "-long_double -S"
.file "t.c"
.text
.data
.align 4
.bss
.align 4
.ident "-?comment:Intel(R) C++ Compiler for 32-bit applications, Version 6.0.1 Build 20020822Z : t.c : -long_double -S"
.data
__STRING.0:
.byte 72 # s8
.byte 101 # s8
.byte 108 # s8
.byte 108 # s8
.byte 111 # s8
.byte 44 # s8
.byte 32 # s8
.byte 87 # s8
.byte 111 # s8
.byte 114 # s8
.byte 108 # s8
.byte 100 # s8
.byte 33 # s8
.byte 10 # s8
.byte 0 # s8
.type __STRING.0,@object
.size __STRING.0,15
.data
.text
# -- Begin main
# mark_begin;
.align 4,0x90
.globl main
main:
.B1.1: # Preds .B1.0
pushl %ebp #4.1
movl %esp, %ebp #4.1
subl $3, %esp #4.1
andl $-8, %esp #4.1
addl $4, %esp #4.1
push $__STRING.0 #5.2
call printf #5.2
# LOE ebx esi edi
.B1.2: # Preds .B1.1
xorl %eax, %eax #6.2
popl %ecx #6.2
movl %ebp, %esp #6.2
popl %ebp #6.2
ret #6.2
.align 4,0x90
# LOE
# mark_end;
.type main,@function
.size main,.-main
.data
# -- End main
.data
# End


Отговор
в отговор на hoopla #37

Re: Neka i az da se izhuwrlja....

mnoo umno, taka i baba moje

Отговор
в отговор на a3 #38

Re: asm

da :)

cl -FAsc coda_deto_pishe_helloworld.c (ili njakoja druga tam ot FAxxx optziite - wizh gi sus cl --help, ili cl -help, cl /?)

sled tova shte imash coda_deto_pishe_helloword.cod i s malko prerabotka shte go imash na assembler - ostava i korekten link da napravish i si gotov ;)

tirulirutatuutuu
Отговор
в отговор на edno momiche #39

А баба ти има ли Kylix 3?

.386p
ifdef ??version
if ??version GT 500H
.mmx
endif
endif
model flat
ifndef ??version
?debug macro
endm
endif
?debug S "t.c"
?debug T "t.c"
.text segment dword public use32 'CODE'
.text ends
.data segment dword public use32 'data'
.data ends
.bss segment dword public use32 'bss'
.bss ends
.rodata segment dword public use32 'rodata'
.rodata ends
borland.tls segment dword public use32 'TLS'
borland.tls ends
dgroup group .bss,.data
.text segment dword public use32 'CODE'
main proc near
?live1@0:
;
; int main()
;
push ebp
mov ebp,esp
;
; {
; printf("Hello, World!\n");
;
@1:
push offset s@
call printf
pop ecx
;
; return 0;
;
xor eax,eax
;
; }
;
@3:
@2:
pop ebp
ret
main endp
.text ends
.data segment dword public use32 'data'
_$A segment virtual
@_$A label byte
db 16
dd main
_$A ends
.data ends
.text segment dword public use32 'CODE'
unwind bindings segment virtual
@unwind bindings label byte
dd main
dd @_$A
unwind bindings ends
.text ends
.rodata segment dword public use32 'rodata'
s@ label byte
; s@+0:
db "Hello, World!",10,0
align 4
.rodata ends
.text segment dword public use32 'CODE'
.text ends
public main
extrn printf:near
?debug D "/usr/include/bits/sys_errlist.h" 15712 50148
?debug D "/usr/include/bits/stdio_lim.h" 15712 50146
?debug D "/home/pet/kylix3/include/stdarg.h" 15708 15858
?debug D "/usr/include/gconv.h" 15712 50084
?debug D "/usr/include/bits/wchar.h" 15712 50145
?debug D "/usr/include/wchar.h" 15712 50152
?debug D "/home/pet/kylix3/include/wchar.h" 15708 15858
?debug D "/usr/include/_G_config.h" 15712 50148
?debug D "/usr/include/libio.h" 15712 50148
?debug D "/usr/include/bits/sched.h" 15712 50162
?debug D "/usr/include/bits/pthreadtypes.h" 15712 50162
?debug D "/usr/include/bits/types.h" 15712 50162
?debug D "/home/pet/kylix3/include/_null.h" 15708 15858
?debug D "/home/pet/kylix3/include/_stddef.h" 15708 15858
?debug D "/home/pet/kylix3/include/stddef.h" 15708 15858
?debug D "/usr/include/gnu/stubs.h" 15712 50219
?debug D "/home/pet/kylix3/include/_defs.h" 15708 15858
?debug D "/home/pet/kylix3/include/sys/cdefs.h" 15708 15858
?debug D "/usr/include/features.h" 15712 50083
?debug D "/usr/include/stdio.h" 15712 50148
?debug D "t.c" 15808 12213
end

Отговор
в отговор на Heпитaщ #40

Re: То верно

w standarta za C (i C++ m/u drugoto) pishe che main wryshta int.
taka che void main() ne e korekten C code, dori i da se kompilira :)

Отговор