Autor Beitrag
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Sa 03.04.10 18:08 
Hey,

ich sitz grad vor meinen HAs un ich komm nich ganz damit klar. Wir sollen mit Assembler die Multiplikation 5 * 74 = 370 nur mit Schiebebefehlen realisieren. Kann mir da jmd den Ansatz bzw. die Vorgangsweiße erklären? Die Implementierung sollte ich dann selbst hin bekommen.

MfG & Thx Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
norman2306
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 222
Erhaltene Danke: 16

Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
BeitragVerfasst: Sa 03.04.10 18:52 
Machen wir das mal mit einer 4bit-Zahl

also:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
   z1       z2
00001010 * 0110 = ?

1. z1 << 0 * z2[0]
00001010 * 0 = 00000000;

2. z2 << 1 * z2[1]
00010100 * 1 = 00010100;

3. z2 << 2 * z2[2]
00101000 * 1 = 00101000;

4. z2 << 3 * z2[3]
01010000 * 0 = 00000000;




//Und dann noch zusammenzählen:
&1   00000000
&2   00010100
&3   00101000
&4   00000000

Res  00111100


>> ist der shift-operator in c#
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Sa 03.04.10 19:01 
Ahh, alles klar, Danke!

€: So ich habs fertig. Für die, die es interessiert hier der Code:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
;Praktikum 9; Multiplikation von 2 Zahlen mit mit Schiebeoperationen
  .MODEL SMALL
  .STACK 100h
  .DATA
zahl1  DB 16d
zahl2 DB 75d
ergeb DW 0d
text  DB 'Das Ergebnis ist '
zahl  DB 4 DUP(0), 'h', 10, 13, '$'
  .CODE
Start:
  mov ax, @data
  mov ds, ax
  
  mov bh, 0h    ;Zahl 1 nach BX
  mov bl, zahl1   
    
  mov cl, 0h    ;Counter in CL beginnt bei 0
M1:
  ;while cx < 8 do begin
    shr bx, 1h
    jc M_Add  
M_Back:
    inc cl    ;Counter hochzählen
    cmp cl, 8h
    jnz M1    ;Sprung wenn nciht 0
  ;end
  
  ;Ausgabe von ergeb
  mov ax, ergeb    ;Ergebnis laden
  mov cx, 4h    ;Counter initialisieren
  
M_ausgabe:
  mov bl, 10h    ;bl mit 10hex laden
  div bl      ;ax durch bl teilen
  cmp ah, 9h    ;ah mit 9 vergleichen
  js M_Ziff    ;Sprung wenn Vorzeichen (Ziffer 0-9)
  jns M_Char    ;Sprung wenn kein Vorzeichen (Zeichen A-F)
  
M_back_2:
  dec cx      ;cx runterzählen
  mov di, cx    ;cx in di
  add di, OFFSET zahl   ;Adresse von zahl dazu (für ind. Addressierung)
  mov [di], ah    ;ah in Speicher schreiben
  mov ah, 0h    ;ah leeren
  
  sub cx, 0h    ;flags zurücksetzen
  jnz M_ausgabe    ;Sprung wenn nicht 0
  
  ;Text ausgeben
  mov dx, OFFSET text
  mov ah, 09h
  int 21h
  
  ;Beenden
  mov ah, 4Ch
  int 21h
  
M_Add:
  mov ax, ergeb    ;Ergebnis laden
  mov dh, 0h    ;Zahl 2 in DX
  mov dl, zahl2
  shl dx, cl    ;Schieben
  add ax, dx    ;neuen Teil zum Ergebnis addieren
  mov ergeb, ax    ;Ergebnis wieder speichern
  jmp M_back    ;Rücksprung
  
M_Ziff:
  add ah, 30h    ;in ASCII-Code umwandeln
  jmp M_back_2    ;Rücksprung

M_Char:
  add ah, 37h    ;in ASCII-Code umwandeln
  jmp M_back_2    ;Rücksprung
  
  END start

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: So 04.04.10 19:35 
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
Ahh, alles klar, Danke!

€: So ich habs fertig. Für die, die es interessiert hier der Code:

Kannst Du uns auch die Quelle verraten? :wink:

_________________
Salus populi suprema lex esto
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 05.04.10 17:03 
Öh, mein Kopf?!

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^