{"id":6462,"date":"2026-01-31T17:09:28","date_gmt":"2026-01-31T16:09:28","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=6462"},"modified":"2026-02-02T16:08:25","modified_gmt":"2026-02-02T15:08:25","slug":"asm","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/asm\/","title":{"rendered":"ASM Broche 10 Arduino"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">On va \u00e9tudier ici l&rsquo;assembleur du ATMEGA328P \u00e0 16MHz, on va d\u00e9couvrir ici quelques mn\u00e9moniques:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>sbi<\/strong> : set bit , 1 cycle d&rsquo;horloge<\/li>\n\n\n\n<li><strong>cbi<\/strong> : clear bit , 1 cycle d&rsquo;horloge<\/li>\n\n\n\n<li><strong>rjmp<\/strong> : saut relatif , 2 cycles d&rsquo;horloge<\/li>\n\n\n\n<li>j<strong>mp<\/strong> : jump (saut) , 3 cycles d&rsquo;horloge<\/li>\n\n\n\n<li><strong>nop <\/strong>;  non op\u00e9ration , un cycle d&rsquo;horloge<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void setup() {\n  \/\/ Configure la broche 10 (PORTB2) en sortie\n  DDRB |= (1 &lt;&lt; PB2);\n}\n\nvoid loop() {\n  \/\/ Boucle en assembleur pour basculer la broche 10\n  asm volatile (\n    \"sbi %[port], %[bit] \\n\\t\"  \/\/ Met la broche \u00e0 HIGH (1 cycle)\n    \"cbi %[port], %[bit] \\n\\t\"  \/\/ Met la broche \u00e0 LOW (1 cycle)\n    \"rjmp .-4          \\n\\t\"    \/\/ Saute en arri\u00e8re de 2 instructions (2 cycles)\n    :\n    : [port] \"I\" (_SFR_IO_ADDR(PORTB)), [bit] \"I\" (PB2)\n  );\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">plus lisible ! on retrouve les addresses DDRB dans me datasheet de l&rsquo;ATMEGA328P<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void setup() {\n  \/\/ L'adresse I\/O de DDRB est 0x04\n  \/\/ On veut le bit 2 (valeur = 1 &lt;&lt; 2 = 4)\n  asm volatile (\n    \"ldi r24, 4     \\n\\t\"  \/\/ Valeur \u00e0 \u00e9crire dans DDRB\n    \"out 0x04, r24  \\n\\t\"  \/\/ DDRB = 0x04\n  );\n}\n\nvoid loop() {\n  asm volatile (\n    \"start:           \\n\\t\"\n    \"sbi 0x05, 2      \\n\\t\"  \/\/ PORTB.2 = 1\n    \"cbi 0x05, 2      \\n\\t\"  \/\/ PORTB.2 = 0\n    \"jmp start        \\n\\t\"  \/\/ Boucle\n  );\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Les adresses I\/O importantes (ATmega328P)<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Registre<\/th><th class=\"has-text-align-left\" data-align=\"left\">Adresse I\/O<\/th><th class=\"has-text-align-left\" data-align=\"left\">Description<\/th><\/tr><\/thead><tbody><tr><td><strong>DDRB<\/strong><\/td><td><code>0x04<\/code><\/td><td>Data Direction Register B<\/td><\/tr><tr><td><strong>PORTB<\/strong><\/td><td><code>0x05<\/code><\/td><td>Data Register B (sortie)<\/td><\/tr><tr><td><strong>PINB<\/strong><\/td><td><code>0x03<\/code><\/td><td>Input Pins Address B (entr\u00e9e)<\/td><\/tr><tr><td><strong>DDRD<\/strong><\/td><td><code>0x0A<\/code><\/td><td>Port D Direction<\/td><\/tr><tr><td><strong>PORTD<\/strong><\/td><td><code>0x0B<\/code><\/td><td>Port D Data<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void setup() {\n  \/\/ L'adresse I\/O de DDRB est 0x04\n  \/\/ On veut le bit 2 (valeur = 1 &lt;&lt; 2 = 4)\n  asm volatile (\n    \"ldi r24, 4     \\n\\t\"  \/\/ Valeur \u00e0 \u00e9crire dans DDRB\n    \"out 0x04, r24  \\n\\t\"  \/\/ DDRB = 0x04\n  );\n}\n\nvoid loop() {\n  asm volatile (\n    \"start:           \\n\\t\"\n    \"sbi 0x05, 2      \\n\\t\"  \/\/ PORTB.2 = 1\n    \"nop \\n\\t\"\n    \"nop \\n\\t\"\n    \"nop \\n\\t\"\n    \"cbi 0x05, 2      \\n\\t\"  \/\/ PORTB.2 = 0\n    \"jmp start        \\n\\t\"  \/\/ Boucle\n  );\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"518\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1-1024x518.png\" alt=\"\" class=\"wp-image-6472\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1-1024x518.png 1024w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1-300x152.png 300w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1-768x388.png 768w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">setup()<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"avrasm\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ldi r24, 4     ; 1 cycle  (Load Immediate)\nout 0x04, r24  ; 1 cycle  (Output to I\/O)\n               ; TOTAL setup: 2 cycles = 125 ns<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">loop()<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"avrasm\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">start:\n  sbi 0x05, 2      ; 2 cycles  (Set Bit I\/O)\n  nop              ; 1 cycle   (No Operation)\n  nop              ; 1 cycle   (No Operation)\n  nop              ; 1 cycle   (No Operation)\n  cbi 0x05, 2      ; 2 cycles  (Clear Bit I\/O)\n  jmp start        ; 3 cycles  (Jump)\n                   ; TOTAL loop: 10 cycles = 625 ns<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Timing d\u00e9taill\u00e9 (16 MHz Arduino) :<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Instruction<\/th><th class=\"has-text-align-left\" data-align=\"left\">Cycles<\/th><th class=\"has-text-align-left\" data-align=\"left\">Dur\u00e9e (ns)<\/th><th class=\"has-text-align-left\" data-align=\"left\">Temps cumul\u00e9 (ns)<\/th><th class=\"has-text-align-left\" data-align=\"left\">\u00c9tat broche<\/th><\/tr><\/thead><tbody><tr><td><code>sbi 0x05,2<\/code><\/td><td>2<\/td><td>125<\/td><td>125<\/td><td><strong>HIGH<\/strong><\/td><\/tr><tr><td><code>nop<\/code><\/td><td>1<\/td><td>62.5<\/td><td>187.5<\/td><td>HIGH<\/td><\/tr><tr><td><code>nop<\/code><\/td><td>1<\/td><td>62.5<\/td><td>250.0<\/td><td>HIGH<\/td><\/tr><tr><td><code>nop<\/code><\/td><td>1<\/td><td>62.5<\/td><td>312.5<\/td><td>HIGH<\/td><\/tr><tr><td><code>cbi 0x05,2<\/code><\/td><td>2<\/td><td>125<\/td><td>437.5<\/td><td><strong>LOW<\/strong><\/td><\/tr><tr><td><code>jmp start<\/code><\/td><td>3<\/td><td>187.5<\/td><td>625.0<\/td><td>LOW<\/td><\/tr><tr><td>Retour \u00e0&nbsp;<code>sbi<\/code><\/td><td>&#8211;<\/td><td>&#8211;<\/td><td>625.0<\/td><td>LOW<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Langage Machine a gauche et Assembleur AVR \u00e0 droite <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"avrasm\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">; Toutes les versions produisent :\n9A 25       ; sbi 0x05, 2\n00 00 00    ; nop nop nop  \n98 25       ; cbi 0x05, 2\n0C 94 00 00 ; jmp start (adresse relative)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>On va \u00e9tudier ici l&rsquo;assembleur du ATMEGA328P \u00e0 16MHz, on va d\u00e9couvrir ici quelques mn\u00e9moniques: plus lisible ! on retrouve les addresses DDRB dans me datasheet de l&rsquo;ATMEGA328P Les adresses [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-6462","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ASM Broche 10 Arduino - workboot<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/workboot.fr\/ciela\/asm\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ASM Broche 10 Arduino - workboot\" \/>\n<meta property=\"og:description\" content=\"On va \u00e9tudier ici l&rsquo;assembleur du ATMEGA328P \u00e0 16MHz, on va d\u00e9couvrir ici quelques mn\u00e9moniques: plus lisible ! on retrouve les addresses DDRB dans me datasheet de l&rsquo;ATMEGA328P Les adresses [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/workboot.fr\/ciela\/asm\/\" \/>\n<meta property=\"og:site_name\" content=\"workboot\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-02T15:08:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"647\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/asm\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/asm\\\/\",\"name\":\"ASM Broche 10 Arduino - workboot\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/asm\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/asm\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/asm_1-1024x518.png\",\"datePublished\":\"2026-01-31T16:09:28+00:00\",\"dateModified\":\"2026-02-02T15:08:25+00:00\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/workboot.fr\\\/ciela\\\/asm\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/asm\\\/#primaryimage\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/asm_1.png\",\"contentUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/asm_1.png\",\"width\":1280,\"height\":647},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"name\":\"workboot\",\"description\":\"Open Source, Open Minds \",\"publisher\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\",\"name\":\"workboot\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"contentUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"width\":1024,\"height\":950,\"caption\":\"workboot\"},\"image\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ASM Broche 10 Arduino - workboot","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/workboot.fr\/ciela\/asm\/","og_locale":"fr_FR","og_type":"article","og_title":"ASM Broche 10 Arduino - workboot","og_description":"On va \u00e9tudier ici l&rsquo;assembleur du ATMEGA328P \u00e0 16MHz, on va d\u00e9couvrir ici quelques mn\u00e9moniques: plus lisible ! on retrouve les addresses DDRB dans me datasheet de l&rsquo;ATMEGA328P Les adresses [&hellip;]","og_url":"https:\/\/workboot.fr\/ciela\/asm\/","og_site_name":"workboot","article_modified_time":"2026-02-02T15:08:25+00:00","og_image":[{"width":1280,"height":647,"url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1.png","type":"image\/png"}],"twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/workboot.fr\/ciela\/asm\/","url":"https:\/\/workboot.fr\/ciela\/asm\/","name":"ASM Broche 10 Arduino - workboot","isPartOf":{"@id":"https:\/\/workboot.fr\/ciela\/#website"},"primaryImageOfPage":{"@id":"https:\/\/workboot.fr\/ciela\/asm\/#primaryimage"},"image":{"@id":"https:\/\/workboot.fr\/ciela\/asm\/#primaryimage"},"thumbnailUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1-1024x518.png","datePublished":"2026-01-31T16:09:28+00:00","dateModified":"2026-02-02T15:08:25+00:00","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/workboot.fr\/ciela\/asm\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/workboot.fr\/ciela\/asm\/#primaryimage","url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1.png","contentUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2026\/02\/asm_1.png","width":1280,"height":647},{"@type":"WebSite","@id":"https:\/\/workboot.fr\/ciela\/#website","url":"https:\/\/workboot.fr\/ciela\/","name":"workboot","description":"Open Source, Open Minds ","publisher":{"@id":"https:\/\/workboot.fr\/ciela\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/workboot.fr\/ciela\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/workboot.fr\/ciela\/#organization","name":"workboot","url":"https:\/\/workboot.fr\/ciela\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/","url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","contentUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","width":1024,"height":950,"caption":"workboot"},"image":{"@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/"}}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"On va \u00e9tudier ici l&rsquo;assembleur du ATMEGA328P \u00e0 16MHz, on va d\u00e9couvrir ici quelques mn\u00e9moniques: plus lisible ! on retrouve les addresses DDRB dans me datasheet de l&rsquo;ATMEGA328P Les adresses [&hellip;]","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/6462","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=6462"}],"version-history":[{"count":13,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/6462\/revisions"}],"predecessor-version":[{"id":6487,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/6462\/revisions\/6487"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=6462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}