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

Jak ma wyglądać w j.Asembler poniższy kod w j.C ,gdzie wstawić NOP

Object Storage Arubacloud
+1 głos
167 wizyt
pytanie zadane 18 października 2019 w Assembler przez Alek40 Nowicjusz (130 p.)
Witam

Jak ma wyglądać w j.Asembler ,poniższy kod w j.C ,gdzie najlepiej wstawić NOP ?Za pomoc z góry dziękuje.

Pozdrawiam

Alek

Kod:

#include <avr/io.h> // Atmega 328P ,kwarc16 MHz
#include <util/delay.h>
 main ()
{
 DDRB = 255;
 PORTB = 170;
 while(1)
 {
 PORTB ^= 255;
 _delay_us(128000000);
   }
 }

1 odpowiedź

0 głosów
odpowiedź 18 października 2019 przez adrian17 Ekspert (344,860 p.)
Raczej nikt tutaj z głowy nie napisze Ci asemblera na AVR :P

Najprościej byłoby po prostu to skompilować i przeczytać wygenerowanego asemblera.

Nawet nie trzeba lokalnie, można kompilatorem online - przykład z wybraną przeze mnie losową atmegą i F_CPU:

https://godbolt.org/z/EzSjex
komentarz 18 października 2019 przez Alek40 Nowicjusz (130 p.)
edycja 18 października 2019 przez Alek40
Dziękuję za odpowiedz.

Zrobiłem dissembly tego kodu C ,  kilka  miesięcy temu na AVR STUDIO 5.1 i działa.

Chodzi mi o skrócenie tego kodu i abym mógł wpisywać różne wartości w delay

Jak zapisać w ASM
PORTB ^= 255;
 _delay_us(128000000);

Tutaj kod jaki mi wyszedł w AVR  Studio 5.1 ,działa  na uC jest zmiana co 64/64 sekund.

    .NOLIST ; kwarc 16 MHz .64/64 sekund
    .INCLUDE "M328PDEF.INC"
    JMP 0x00000034    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    JMP 0x0000003E    
    CLR R1              
    OUT 0x3F,R1          
    SER R28              
    LDI R29,0x08        
    OUT 0x3E,R29        
    OUT 0x3D,R28        
    CALL 0x00000040        
    JMP 0x00000054     
    JMP 0x00000000      
    SER R24               
    OUT 0x04,R24        
    LDI R24,0xAA        
    OUT 0x05,R24        
    IN R24,0x05           
    COM R24               
    OUT 0x05,R24        
    LDI R24,0x54        
    LDI R25,0x85        
    LDI R26,0x45        
    LDI R27,0x01        
    SUBI R24,0x01        
    SBCI R25,0x00        
    SBCI R26,0x00        
    SBCI R27,0x00        
    BRNE PC-0x04        
    RJMP PC+0x0001        
    RJMP PC+0x0001        
    NOP;No operation
    RJMP PC-0x000F        
    CLI                
    RJMP PC-0x0000        

---------------------------------------------------------------------------------------------------------

 C++ ALL PB.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000000ac  00000000  00000000  00000054  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .stab         000006cc  00000000  00000000  00000100  2**2
                  CONTENTS, READONLY, DEBUGGING
  2 .stabstr      00000090  00000000  00000000  000007cc  2**0
                  CONTENTS, READONLY, DEBUGGING
  3 .debug_aranges 00000020  00000000  00000000  0000085c  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_pubnames 0000001b  00000000  00000000  0000087c  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_info   0000014a  00000000  00000000  00000897  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_abbrev 000000f3  00000000  00000000  000009e1  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_line   000001bb  00000000  00000000  00000ad4  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_frame  00000020  00000000  00000000  00000c90  2**2
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_str    00000122  00000000  00000000  00000cb0  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_pubtypes 0000002b  00000000  00000000  00000dd2  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
   0:    0c 94 34 00     jmp    0x68    ; 0x68 <__ctors_end>
   4:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
   8:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
   c:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  10:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  14:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  18:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  1c:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  20:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  24:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  28:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  2c:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  30:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  34:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  38:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  3c:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  40:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  44:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  48:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  4c:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  50:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  54:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  58:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  5c:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  60:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>
  64:    0c 94 3e 00     jmp    0x7c    ; 0x7c <__bad_interrupt>

00000068 <__ctors_end>:
  68:    11 24           eor    r1, r1
  6a:    1f be           out    0x3f, r1    ; 63
  6c:    cf ef           ldi    r28, 0xFF    ; 255
  6e:    d8 e0           ldi    r29, 0x08    ; 8
  70:    de bf           out    0x3e, r29    ; 62
  72:    cd bf           out    0x3d, r28    ; 61
  74:    0e 94 40 00     call    0x80    ; 0x80 <main>
  78:    0c 94 54 00     jmp    0xa8    ; 0xa8 <_exit>

0000007c <__bad_interrupt>:
  7c:    0c 94 00 00     jmp    0    ; 0x0 <__vectors>

00000080 <main>:
#include <avr/io.h> // Atmega 328P ,kwarc16 MHz
#include <util/delay.h>
 main ()
{
 DDRB = 255;
  80:    8f ef           ldi    r24, 0xFF    ; 255
  82:    84 b9           out    0x04, r24    ; 4
 PORTB = 170;
  84:    8a ea           ldi    r24, 0xAA    ; 170
  86:    85 b9           out    0x05, r24    ; 5
 while(1)
 {
 PORTB ^= 255;
  88:    85 b1           in    r24, 0x05    ; 5
  8a:    80 95           com    r24
  8c:    85 b9           out    0x05, r24    ; 5
    #else
        //round up by default
        __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
    #endif

    __builtin_avr_delay_cycles(__ticks_dc);
  8e:    84 e5           ldi    r24, 0x54    ; 84
  90:    95 e8           ldi    r25, 0x85    ; 133
  92:    a5 e4           ldi    r26, 0x45    ; 69
  94:    b1 e0           ldi    r27, 0x01    ; 1
  96:    81 50           subi    r24, 0x01    ; 1
  98:    90 40           sbci    r25, 0x00    ; 0
  9a:    a0 40           sbci    r26, 0x00    ; 0
  9c:    b0 40           sbci    r27, 0x00    ; 0
  9e:    d9 f7           brne    .-10         ; 0x96 <main+0x16>
  a0:    00 c0           rjmp    .+0          ; 0xa2 <main+0x22>
  a2:    00 c0           rjmp    .+0          ; 0xa4 <main+0x24>
  a4:    00 00           nop
  a6:    f0 cf           rjmp    .-32         ; 0x88 <main+0x8>

000000a8 <_exit>:
  a8:    f8 94           cli

000000aa <__stop_program>:
  aa:    ff cf           rjmp    .-2          ; 0xaa <__stop_program>

Podobne pytania

0 głosów
1 odpowiedź 448 wizyt
0 głosów
2 odpowiedzi 228 wizyt
pytanie zadane 4 października 2018 w Assembler przez Krysia32 Nowicjusz (150 p.)
0 głosów
1 odpowiedź 493 wizyt
pytanie zadane 12 maja 2020 w Assembler przez evela Nowicjusz (120 p.)

92,540 zapytań

141,382 odpowiedzi

319,481 komentarzy

61,928 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...