Pascal czy Assembler?

Odpowiedz Nowy wątek
2019-07-23 13:52
0

Witajcie

Postanowiłem poduczyć się trochę assemblera i jest to mój pierwszy początkowy programik z wykorzystaniem stawek assemblerowych. Być może sobie trochę i ułatwiłem, gdyż nic nie instalowałem na kompie a wykorzystałem jedynie kompilator pascala. W celach ćwiczeń, postanowiłem rozwiązać jakiś prosty problem w tym przypadku poruszony na forum.

Napisz program który wprowadzi z klawiatury napis(8znakow) i wyświetli go na ekranie w porządku odwrotnym.

Jestem ciekawy też waszego zdania. Czy takie zaczęcie uczenia się assemblera ma sens i czy można jakoś lepiej rozwiązać owe zadanie. W tym momencie moja wiedza i praktyka pozwalają na zrobienie owego zadania w ten sposób.

{ Ps. zamiast 8 jest 11 :). }
program Zadanie1;
uses Crt;
var
   tekst: array[1..11] of char;
   i: integer;
begin
     ClrScr;
     writeln('Napisanie i wyświetlenie tekstu na ekranie');
     writeln('Zawartość tablicy TEKST typu char');
     for i := 1 to 11 do
        write(tekst);
     writeln;
     writeln('Przykładowy tekst: ALA MA KOTA');
asm
        mov cx, 0h
        mov cx, seg tekst
        mov si, offset tekst
        mov ds, cx
        mov di, si
        mov cx, 0Bh
        @petla:
              mov ah, 08h
              int 21h
              mov ds:[di], al
              add di, 1
        loop @petla
        mov dx, 0h
        mov cx, 0Bh
        mov di, si { Wyświetlanie od końca - sub di, 1 }
        @petla_dwa:
                   mov dl, ds:[di]
                   mov ah, 02h
                   int 21h
                   add di, 1 { Wyświetlanie od końca - sub di, 1 }
        loop @petla_dwa
end;
     writeln;
     writeln('-------------------Sprawdzenie----------------');
     for i := 1 to 11 do
        write(tekst[i])
end.

Proszę o wasze opinie ewentualnie o jakieś drobne sugestie.
Pozdrawiam


Nieoszlifowany diament
edytowany 14x, ostatnio: furious programming, 2019-07-27 01:14

Pozostało 580 znaków

2019-07-25 11:45
1

Nie widzę powodu aby to pisać w czystym WinApi wystarczy w Delphi czy FP (stosując funkcje które są nakładkami na WinApi). Tak samo jak nie widzę powodu miałby być napisany w assemblerze poza jednym bardzo ważnym nauczyciel jest idiotą, który w tych czasach uczy stosowania wstawek assemblera w 16 bitowym Pascalu.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.

Pozostało 580 znaków

2019-07-25 11:52
0

Czy ja wiem, asm przydatna rzecz, jednak jeśli OP będzie chciał dalej się rozwijać w tym kierunku to polecam przenieść się na coś 32 bitowego, a tam już sobie nie poprzerywa :)

edytowany 1x, ostatnio: furious programming, 2019-07-25 11:53
OP i Delphi od dawna są wieloplatformowe już od dawna można kompilować programy 32bit a nawet 64bit i to nie tylko pod Windows więc nie ma mowy o rozwoju w tym kierunku. - kAzek 2019-07-25 12:10
OP mialem na mysli tworce watku a nie object pascala - FL4RE 2019-07-25 17:48
hola hola, weźmie 32-bitowego STM-a i sobie poprzerywa aż miło - sugar_hiccup 2019-08-04 02:58

Pozostało 580 znaków

2019-07-25 13:22
0

asm przydatna rzecz

@FL4RE - a tak właściwie to do czego? Chodzi mi oczywiście o "typowe" zastosowania, takie jak jakaś apka desktopowa, stronka w React czy baza w SQL :P


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
Można pisać patche do aplikacji w formie launchera który podmienia wskaźniki na funkcje - widziałem coś takiego do starego VCL jak się nie miało nowego Delphi ;p - somedev 2019-07-25 13:33

Pozostało 580 znaków

2019-07-25 13:47
0
cerrato napisał(a):

asm przydatna rzecz

@FL4RE - a tak właściwie to do czego? Chodzi mi oczywiście o "typowe" zastosowania, takie jak jakaś apka desktopowa, stronka w React czy baza w SQL :P

Do robienia programów rozruchowych :D . A tak na poważnie: do optymalizacji.

Pokaż pozostałe 3 komentarze
@PerlMonk: nie żartuj. Używanie asm w fotoszopie było by głupotą. Generalnie to nie te czasy gdzie optymalizuje się asm. Owszem - optyalizuje się wiedzą, jak to wykona się na procesorze i żeby wykonało się lepiej, mniej czekało na dane, ale da się to zrobić z poziomu języków wysokiego poziomu jak C++, C# czy Java. Pchanie asm do dużych programów jeśli nie trzeba jest skrajnie nieodpowiedzialne i byłby to pierwszy krok do zwolnienia architekta czy seniora co to klepnął. - somedev 2019-07-25 14:09
@somedev: Nie napisałem, że fotopracza trzeba pisać w asemblerze. - PerlMonk 2019-07-25 14:14
Optymalizacje w Asmie są opłacalne jeśli pisze je ktoś kto zna architekturę procesorów lepiej niż twórcy kompilatorów, a o to jest dość ciężko. W końcu chcemy być lepsi od kompilatora, nie? Inna sprawa, że optymalizacje w Asmie są bardzo ciekawe i ogólnie Asm jest ciekawy :) - Shizzer 2019-07-25 14:28
@Shizzer: tak, jest ciekawy, ale w 99.6% przypadków także bezsensowny ;) - cerrato 2019-07-25 15:48
@cerrato: To się zgadza. W dzisiejszych czasach pisanie 99% programów w Asmie jest pozbawione sensu - Shizzer 2019-07-25 16:03

Pozostało 580 znaków

2019-07-25 17:44
0

No co wy Panowie, a taki pentester czy badacz bezpieczeństwa czy nawet pospolity cracker to bez asma sie nie obejdzie.
Sam najbardziej skorzystałem na tej znajomości pisząc cheaty do gierek

Ok, ale to i tak jest nisza - cerrato 2019-07-25 17:55

Pozostało 580 znaków

2019-07-25 17:55
0

Oczywiście masz rację, ale nadal jest to nisza. @cerrato pytał o typowe rozwiązania, a w takich rozwiązaniach jak apki desktopowe, a już tym bardziej webowe Asm nie jest przydatny w dzisiejszych czasach. Co do security to Asm jest świetnym narzędziem - sam często korzystam ;)


edytowany 1x, ostatnio: furious programming, 2019-07-25 18:15

Pozostało 580 znaków

2019-07-25 19:16
3

Czy wszystko na tym forum musi być mainstreamowe, nowe i przynoszące zarobek? Czasami ktoś może chcieć napisać coś pod starą czy niszową platformę.

Pozostało 580 znaków

2019-07-25 19:25
0

Oczywiście, że może się bawić assemblerem w ramach pasji/hobby/pracy w jakiejś niszy, ale polecanie komuś asm w kontekście przyszłej pracy jest zwyczajnie nieetyczne i niemoralne :p


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
Niemoralne jest płacenie 15k programistom. Toż to normalna praca biurowa. - PerlMonk 2019-07-25 21:11

Pozostało 580 znaków

2019-07-25 19:37
0
Azarien napisał(a):

Czy wszystko na tym forum musi być mainstreamowe, nowe i przynoszące zarobek?

Też mnie wnerwia takie gadanie. Wiadome, że nie wszystkie technologie nadają się w tym momencie do robienia kariery, jednak masa ludzi programuje z innego powodu niż dla pieniędzy.

cerrato napisał(a):

Oczywiście, że może się bawić assemblerem w ramach pasji/hobby/pracy w jakiejś niszy, ale polecanie komuś asm w kontekście przyszłej pracy jest zwyczajnie nieetyczne i niemoralne :p

Nie przesadzaj – systemy wbudowane to nie nisza, a język bardzo się przydaje. Nie wszystko stoi na Arduino. ;)


Pozostało 580 znaków

2019-07-25 19:49
0

systemy wbudowane to nie nisza

No jednak tak. Zobacz, ile jest wątków o Java, C#, webmastering, Pythonie, PHP czy nawet tym nieszczęsnym Delphi ;) A ile wątków jest o programowaniu kontrolerów (i to niekoniecznie w assemblerze)? Oczywiście, sama liczba postów nie jest ostatecznym wyznacznikiem, ale jednak o czymś świadczy. Sam osobiście znam wiele osób, które robią desktopach czy web, ale chyba nikogo, kto na poważnie siedzi w kontrolerach.

Moim zdaniem jest to bardzo niszowa działka, a to co napisałem wcześniej (że w 99% przypadków asm się do niczego nie przyda) jest prawdziwe.


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot