• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

assembly language

VPS Starter Arubacloud
–1 głos
251 wizyt
pytanie zadane 21 lutego 2019 w Assembler przez adam11 Użytkownik (570 p.)
Prosty program w assembly:

Podaje liczbe kalorii >0

i program odpowiada czy posilek jest wysoko, srednio czy nisko kaloryczny

(wysoko, od 750 kalorii włącznie, średnio od 350 do 750 kalorii, od 0 do 350 włącznie nisko)

z uzyciem petli while i trzema 'if'.

Jesli podana przez uzytkownika wartosc jest mniejsza niz 0 to program konczy, pokazujac ile lacznie kalorii spozyto i ile posilkow zostalo dodanych.

 

Dla kogos bieglego w assembly to sa 3 minuty, a ja pilnie potrzebuje. Moge liczyc na czyjas pomoc?
1
komentarz 21 lutego 2019 przez niezalogowany
Na pomoc możesz liczyć, ale nie na gotowca. Masz kod, napotkałeś problem - wstaw go. Pomożemy. Nie masz nic - naucz się i zrób.
komentarz 21 lutego 2019 przez Eryk Andrzejewski Mędrzec (164,260 p.)

@adam11,

Jak najbardziej popieram zdanie kolegi wyżej, proszę się wykazać samodzielnie, wtedy będziesz mógł liczyć na jakąś pomoc.

Na pewno trudno nam będzie pomóc, kiedy nie wiemy nic o środowisku, w którym tworzysz. Język asemblera nie jest uniwersalny - każda architektura ma swój. W dodatku kod na tryb rzeczywisty i tryb chroniony architektury x86 będą się różnić. Jeżeli chcesz korzystać z jakichś wywołań systemowych (a pewnie będziesz korzystał, na przykład aby pobrać od użytkownika jakąś wartość, albo wypisać coś na ekran) - tutaj znowu jest sytuacja taka, że na każdym systemie może wyglądać to inaczej. I ostatnia sprawa, każdy asembler (program do asemblacji, np. fasm, nasm, tasm, masm, GNU-as…) może różnić się składnią, dyrektywami…

Jednym słowem, bez konkretnych informacji nie będziemy w stanie Ci pomóc.

komentarz 22 lutego 2019 przez adam11 Użytkownik (570 p.)
Wrzucilem to co mam do tej pory, tworze w visual studio, architerktura x86 (32bit)

2 odpowiedzi

–1 głos
odpowiedź 21 lutego 2019 przez adam11 Użytkownik (570 p.)
edycja 22 lutego 2019 przez adam11
 // program który: przyjmuje wartość kalorii od użytkownika
 // jeśli: ilość kalorii przekracza lub jest równy 750 jest to posiłek wysoko kaloryczny i ten posiłek ma wartość 3 (wyświetlamy wartość posiłku dla użytkownika)

// jeśli: ilość kalorii jest większa lub równa 350 i mniejsza niż 750 jest to posiłek średnio kaloryczny i ten posiłek ma wartość 2 (wyświetlamy wartość posiłku dla użytkownika)

// jeśli: ilość kalorii jest mniejsza niż 350 jest to posiłek średnio kaloryczny i ten posiłek ma wartość 0 (wyświetlamy wartość posiłku dla użytkownika)

// jeśli: ilość kalorii podana jest mniejsza niż 0, kończymy program i pokazujemy łączna ilość wydanych posiłków i ich łączną wartość

 

komentarz 21 lutego 2019 przez adam11 Użytkownik (570 p.)
Kod niestety nie dziala tak jakbym chcial, mecze sie z tym strasznie dlugo juz
–1 głos
odpowiedź 21 lutego 2019 przez Chess Szeryf (76,710 p.)

Mniej więcej tak może być napisany program:

global _main
extern _printf
extern _scanf

section .data

format: db "%d", 0
format2: db "%s", 0
end_p: db "End Program", 0
high_meal: db "High Meal", 0xa, 0
medium_meal: db "Medium Meal", 0xa, 0
low_meal: db "Low Meal", 0xa, 0

section .text

_main:

loop1:

	push xxx
	push format
	call _scanf
	pop eax
	pop eax

	cmp dword [eax], 0
	jl exit_of_program
	
	cmp dword [eax], 750
	jae high_c
	
	cmp dword [eax], 750
	jnl skip1
	cmp dword [eax], 350
	jae medium_c
	
	cmp dword [eax], 350
	jnl skip1
	cmp dword [eax], 0
	jae low_c
	
	skip1:
	
jmp loop1

;push dword [eax]
;push format
;call _printf
;add esp, 8

ret


exit_of_program:
	push end_p
	push format2
	call _printf
	add esp, 8
ret

high_c:
	push high_meal
	push format2
	call _printf
	add esp, 8
	jmp loop1
ret

medium_c:
	push medium_meal
	push format2
	call _printf
	add esp, 8
	jmp loop1
ret

low_c:
	push low_meal
	push format2
	call _printf
	add esp, 8
	jmp loop1
ret

section .bss

xxx: resb 1

Assembler Nasm, compiler gcc, linker chyba ld.

Kompilacja:

nasm -fwin32 scanf___1.asm && gcc scanf___1.obj && a

Podobne pytania

0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 13 marca 2020 w Assembler przez lu7x00 Nowicjusz (220 p.)
0 głosów
1 odpowiedź 250 wizyt
pytanie zadane 2 marca 2019 w Assembler przez Michał Gibas Pasjonat (19,610 p.)
–1 głos
0 odpowiedzi 335 wizyt
pytanie zadane 24 lutego 2019 w Assembler przez adam11 Użytkownik (570 p.)

92,452 zapytań

141,262 odpowiedzi

319,079 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...