Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %include "asm_io.inc"
  2.  
  3. segment .data
  4.  
  5.  
  6.  
  7. text1 db    "Wechselbetrag eingeben: ", 0
  8.  
  9. text2 db    "50 Cent Stuecke: ", 0
  10.  
  11. text3 db    "10 Cent Stuecke: ", 0
  12.  
  13. text4 db    " 5 Cent Stuecke: ", 0
  14.  
  15. text5 db    " 1 Cent Stuecke: ", 0
  16.  
  17.  
  18.  
  19. segment .bss
  20.  
  21.  
  22.  
  23. input resd 1
  24.  
  25. vergleich resd 1
  26.  
  27.  
  28.  
  29. ausgabe resd 1
  30.  
  31.  
  32.  
  33.  
  34.  
  35. segment .text
  36.  
  37.         global  asm_main
  38.  
  39. asm_main:
  40.  
  41.  
  42.  
  43.     mov eax, text1        ; Text laden
  44.  
  45.     call print_string        ; Text ausgeben
  46.    
  47.  
  48.  
  49.  
  50.     call read_int        ; Wechselgeldbetrag einlesen
  51.  
  52.     call print_nl        ; Neue Zeile
  53.  
  54.  
  55.  
  56.     mov [input], eax        ; und speichern in input1
  57.  
  58.  
  59.  
  60.     mov ecx, 50            ; Vergleichszahl 1 speichern
  61.  
  62.     mov [vergleich], ecx
  63.  
  64.  
  65.  
  66.  
  67.  
  68. f0: mov eax, [input]        ; Wechselgeldbetrag laden
  69.  
  70.     cmp eax, 50     ; Wechselgeldbetrag mit 50 Cent vergleichen
  71.  
  72.     JGE f1            ; Falls Wechselgeldbetrag größer als 50 Cent, springe zu s1
  73.  
  74.  
  75.  
  76.     mov eax, text2        ; lädt den Text
  77.  
  78.     call print_string        ; gibt den Text aus
  79.  
  80.     mov eax, [ausgabe]        ; lädt in eax Ausgabe
  81.  
  82.     call print_int        ; gibt die Zahl aus
  83.  
  84.     call print_nl        
  85.  
  86.     mov eax, 0            ;setzt die Ausgabe gleich 0
  87.  
  88.     mov [ausgabe], eax
  89.  
  90.  
  91.  
  92.     mov eax, [input]
  93.  
  94.      cmp eax, 50
  95.  
  96.     JL z0            ; Falls Wechselgeldbetrag kleiner als 50 Cent ist, springe zu s2
  97.  
  98.  
  99.  
  100.  
  101.  
  102. f1: mov ebx, [ausgabe]        ; Zähler für 50 Cent laden
  103.  
  104.     add ebx, 1            ; 1 addieren FEHLER ???
  105.  
  106.     mov [ausgabe], ebx        ; Zähler für 50 Cent speichern
  107.  
  108.     mov edx, [input]        ; Wechselgeldbetrag laden
  109.  
  110.     sub edx, 50            ; 50 Cent abziehen
  111.  
  112.     mov [input], edx
  113.  
  114.     jmp f0            ; Springe zurück zum Vergleich
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121. z0: mov eax, [input]        ; Wechselgeldbetrag laden
  122.  
  123.     cmp eax, 10         ; Wechselgeldbetrag mit 50 Cent vergleichen
  124.  
  125.     JGE z1            ; Falls Wechselgeldbetrag größer als 50 Cent, springe zu s1
  126.  
  127.  
  128.  
  129.     mov eax, text3        ; lädt den Text
  130.  
  131.     call print_string        ; gibt den Text aus
  132.  
  133.     mov eax, [ausgabe]        ; lädt in eax Ausgabe
  134.  
  135.     call print_int        ; gibt die Zahl aus
  136.  
  137.     call print_nl        
  138.  
  139.     mov eax, 0            ;setzt die Ausgabe gleich 0
  140.  
  141.     mov [ausgabe], eax
  142.  
  143.  
  144.  
  145.     mov eax, [input]
  146.  
  147.      cmp eax, 10
  148.  
  149.     JL c0            ; Falls Wechselgeldbetrag kleiner als 50 Cent ist, springe zu s2
  150.  
  151.  
  152.  
  153.  
  154.  
  155. z1: mov ebx, [ausgabe]        ; Zähler für 50 Cent laden
  156.  
  157.     add ebx, 1            ; 1 addieren FEHLER ???
  158.  
  159.     mov [ausgabe], ebx        ; Zähler für 10 Cent speichern
  160.  
  161.     mov edx, [input]        ; Wechselgeldbetrag laden
  162.  
  163.     sub edx, 10            ; 10 Cent abziehen
  164.  
  165.     mov [input], edx
  166.  
  167.     jmp z0            ; Springe zurück zum Vergleich
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174. c0: mov eax, [input]        ; Wechselgeldbetrag laden
  175.  
  176.     cmp eax, 5         ; Wechselgeldbetrag mit 50 Cent vergleichen
  177.  
  178.     JGE c1            ; Falls Wechselgeldbetrag größer als 50 Cent, springe zu s1
  179.  
  180.  
  181.  
  182.     mov eax, text4        ; lädt den Text
  183.  
  184.     call print_string        ; gibt den Text aus
  185.  
  186.     mov eax, [ausgabe]        ; lädt in eax Ausgabe
  187.  
  188.     call print_int        ; gibt die Zahl aus
  189.  
  190.     call print_nl        
  191.  
  192.     mov eax, 0            ;setzt die Ausgabe gleich 0
  193.  
  194.     mov [ausgabe], eax
  195.  
  196.  
  197.  
  198.     mov eax, [input]
  199.  
  200.      cmp eax, 5
  201.  
  202.     JL e1            ; Falls Wechselgeldbetrag kleiner als 50 Cent ist, springe zu s2
  203.  
  204.  
  205.  
  206.  
  207.  
  208. c1: mov ebx, [ausgabe]        ; Zähler für 50 Cent laden
  209.  
  210.     add ebx, 1            ; 1 addieren FEHLER ???
  211.  
  212.     mov [ausgabe], ebx        ; Zähler für 10 Cent speichern
  213.  
  214.     mov edx, [input]        ; Wechselgeldbetrag laden
  215.  
  216.     sub edx, 5            ; 5 Cent abziehen
  217.  
  218.     mov [input], edx
  219.  
  220.     jmp c0            ; Springe zurück zum Vergleich
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227. e0: mov eax, [input]        ; Wechselgeldbetrag laden
  228.  
  229.     cmp eax, 1             ; Wechselgeldbetrag mit 1 Cent vergleichen
  230.  
  231.     JGE e1            ; Falls Wechselgeldbetrag größer als 10 Cent, springe zu e1
  232.  
  233.  
  234.  
  235.     mov eax, text5        ; lädt den Text
  236.  
  237.     call print_string        ; gibt den Text aus
  238.  
  239.     mov eax, [ausgabe]        ; lädt in eax Ausgabe
  240.  
  241.     call print_int        ; gibt die Zahl aus
  242.  
  243.     call print_nl        
  244.  
  245.     mov eax, 0            ;setzt die Ausgabe gleich 0
  246.  
  247.     mov [ausgabe], eax
  248.  
  249.  
  250.  
  251.     mov eax, [input]
  252.  
  253.      cmp eax, 1            ; Vergleich ob mehr als ein Cent vorhanden ist
  254.  
  255.     JL end            ; Falls Wechselgeldbetrag kleiner als 1 Cent ist beende das Programm
  256.  
  257.  
  258.  
  259.  
  260.  
  261. e1: mov ebx, [ausgabe]        ; Zähler für 50 Cent laden
  262.  
  263.     add ebx, 1            ; 1 addieren FEHLER ???
  264.  
  265.     mov [ausgabe], ebx        ; Zähler für 10 Cent speichern
  266.  
  267.     mov edx, [input]        ; Wechselgeldbetrag laden
  268.  
  269.     sub edx, 1            ; 1 Cent abziehen
  270.  
  271.     mov [input], edx
  272.  
  273.     jmp e0            ; Springe zurück zum Vergleich
  274.  
  275.  
  276.  
  277.  
  278. end:    mov     eax, 0            ; return back to C
  279.  
  280.         leave                    
  281.  
  282.         ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement