{"id":14929,"date":"2022-12-26T00:55:22","date_gmt":"2022-12-26T00:55:22","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=14929"},"modified":"2022-12-26T19:34:00","modified_gmt":"2022-12-26T19:34:00","slug":"hello-world-in-modern-assembly","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/","title":{"rendered":"Hello World in Modern Assembly"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Creating Hello World in Modern Assembly<\/h2>\n\n\n\n<p>To create Hello World in Modern Assembly (x86 \/ x64) we&#8217;ll need to have an assembler installed.   In this case, I&#8217;m using the GNU Assembler (GAS).  I&#8217;ll set this up in Debian Linux.  This assembler is in the &#8220;build-essential&#8221; package.  We&#8217;ll walk through the creation of this project step by step.  After that, we&#8217;ll assemble, and  load the file (through our linker).  Then we&#8217;ll test the project.<\/p><div id=\"bryce-2192952802\" class=\"bryce-afterfirst bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"7728240895\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>\n\n\n\n<p>The purpose of this project is to simply send the text &#8220;Hello World!&#8221; to the terminal.  This walks you through getting a very simple project up and running.  After that, you can research other assembly instructions, and tweak the program.  A Hello World project is always a great starting point for learning assembly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Add Data and Text Areas<\/h2>\n\n\n\n<p>This assembly program (as well as many others) contain two main sections.  The data area is where we store data that we need to sue in the project.  The Text area is where we write our program.  In other words, the text area contains instructions.  <\/p>\n\n\n\n<p>At this time, we&#8217;ll start off with some comments.  Let&#8217;s enter these comments, the data area, and we&#8217;ll start the text area of our program.  It&#8217;s important to realize, that the label &#8220;mystring:&#8221; will represent the memory location of the start of our string.  We&#8217;ll declare this data as ASCII, and at the end of &#8220;Hello World!&#8221;, you notice we have a \\n.   This will start a new line on the terminal.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># PURPOSE:\tThe purpose of this program is to simply demonstrate\n#\t\tHow to send a string output to the terminal.\n# INPUT:\tNONE\n# OUTPUT:\tHello World!\n#\n# NOTE:  \tAfter the program runs, you can view the status\n#\t\tby typing echo #?\n.section .data\nmystring:\n    .ascii  \"Hello World!\\n\"\n\n.section .text<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Populate the Text Area for Hello World in Modern Assembly<\/h2>\n\n\n\n<p>In this area, we will enter the program.  Let&#8217;s type in the rest of our program, then we&#8217;ll walk through this step by step.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.globl _start\n_start:\n\t\tmov\t$1, %eax\t# System Call to Write\n\t\tmov\t$1, %edi\t# Write to screen (stdout)\n\t\t\t\t\t# Sends output to Terminal\n\t\tmov\t$mystring, %esi # Address of String to send\n\t\tmov\t$13, %edx  \t# String Length (bytes)\n\t\tsyscall\n\n    \t\t#Exit\n                mov $0, %rdi\n\t\tmov $60, %rax\n\t\tsyscall\n\n<\/code><\/pre>\n\n\n\n<p>First, we are declaring the start label as GLOBAL.  This allows the linker to see where our program starts.<\/p>\n\n\n\n<p>After that, we need to set up a few registers.  We are setting up these registers to tell the system what to do with the data.  The Accumulator (eax) will contain the value of 1.  This tells the system that we want to perform a write.  Check out <a href=\"https:\/\/thevivekpandey.github.io\/posts\/2017-09-25-linux-system-calls.html\">this chart <\/a>for a list of system calls.  After that, we need to tell the system what to write to.  By placing the value of 1 into the edi register, we are instructing the system to send the output to our terminal (stdout).<\/p>\n\n\n\n<p>Additionally, the system needs to know where in memory the string resides.  We move the starting address of the string into the esi register.  Obviously, the system also needs to know how much data to write.  The length will be 13 bytes (13 characters) total.   We place this value into our data register (edx).  <\/p>\n\n\n\n<p>At last we are ready to call the system to take action with the syscall command.<\/p>\n\n\n\n<p>After that, we will cleanly exit the program.   In this case, I&#8217;m moving 0x3c into the accumulator.  Then we are ready to take action with the syscall command.<\/p>\n\n\n\n<p>We&#8217;ll save our work as &#8220;hello.s&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Assemble and Link your Code<\/h2>\n\n\n\n<p>I&#8217;m cheating a little bit by making a script.  As you can see, this script makes the common task of assembling and linking files a little bit easier.  In order to write the script, I&#8217;m just using VI.  You can use your favorite editor.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"189\" height=\"98\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-61.png\" alt=\"\" class=\"wp-image-14931 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 189px; --smush-placeholder-aspect-ratio: 189\/98;\" \/><\/figure>\n\n\n\n<p>Now press :wq to write and quit.  Next, we need to make this script executable:  chmod 766 assemble<\/p>\n\n\n\n<p>In this example, I have my script in the same directory as the file I created.   I&#8217;ll just type &#8220;.\/assemble hello&#8221;.  The script will add the suffixes we need automatically.<\/p>\n\n\n\n<p>If you didn&#8217;t get any errors, let&#8217;s try running the program:<\/p>\n\n\n\n<p>.\/hello<\/p>\n\n\n\n<p>Your result should appear on your terminal screen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"372\" height=\"70\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-62.png\" alt=\"\" class=\"wp-image-14932 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-62.png 372w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-62-300x56.png 300w\" data-sizes=\"(max-width: 372px) 100vw, 372px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 372px; --smush-placeholder-aspect-ratio: 372\/70;\" \/><\/figure>\n\n\n\n<p>If you have trouble, look at every character in your hello.s file.  Chances are, you have a mistake in your code.  Here is my full listing:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"771\" height=\"488\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-63.png\" alt=\"Hello World in Modern Assembly\" class=\"wp-image-14933 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-63.png 771w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-63-300x190.png 300w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-63-768x486.png 768w\" data-sizes=\"(max-width: 771px) 100vw, 771px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 771px; --smush-placeholder-aspect-ratio: 771\/488;\" \/><\/figure>\n\n\n\n<p>For more information, visit the <a href=\"https:\/\/bryceautomation.com\/index.php\/category\/information-technology\/\">information technology category!<\/a>  As always, if you see any errors in this post, feel free to comment below, so I can get them corrected.<\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-1354542178\" class=\"bryce-after-content bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"4667596182\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Creating Hello World in Modern Assembly To create Hello World in Modern Assembly (x86 \/ x64) we&#8217;ll need to have an assembler installed. In this case, I&#8217;m using the GNU Assembler (GAS). I&#8217;ll set this up in Debian Linux. This assembler is in the &#8220;build-essential&#8221; package. We&#8217;ll walk through the creation of this project step <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":14933,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[784,896],"class_list":{"0":"post-14929","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-information-technology","8":"tag-assembly","9":"tag-hello-world","10":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hello World in Modern Assembly - Bryce Automation<\/title>\n<meta name=\"description\" content=\"How to write Hello World in Modern Assembly. For this example, I&#039;m using the GNU Assembler on a Debian Linux machine.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hello World in Modern Assembly - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"How to write Hello World in Modern Assembly. For this example, I&#039;m using the GNU Assembler on a Debian Linux machine.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/\" \/>\n<meta property=\"og:site_name\" content=\"Bryce Automation\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ricky.bryce.7\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-26T00:55:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-26T19:34:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-63.png\" \/>\n\t<meta property=\"og:image:width\" content=\"771\" \/>\n\t<meta property=\"og:image:height\" content=\"488\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ricky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"Hello World in Modern Assembly\",\"datePublished\":\"2022-12-26T00:55:22+00:00\",\"dateModified\":\"2022-12-26T19:34:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/\"},\"wordCount\":693,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-63.png\",\"keywords\":[\"Assembly\",\"Hello World\"],\"articleSection\":[\"Information Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/\",\"name\":\"Hello World in Modern Assembly - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-63.png\",\"datePublished\":\"2022-12-26T00:55:22+00:00\",\"dateModified\":\"2022-12-26T19:34:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"How to write Hello World in Modern Assembly. For this example, I'm using the GNU Assembler on a Debian Linux machine.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-63.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-63.png\",\"width\":771,\"height\":488,\"caption\":\"Hello World in Modern Assembly\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/26\\\/hello-world-in-modern-assembly\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hello World in Modern Assembly\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/\",\"name\":\"Bryce Automation\",\"description\":\"Automating Home and Industry...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bryceautomation.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\",\"name\":\"Ricky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"caption\":\"Ricky\"},\"sameAs\":[\"http:\\\/\\\/bryceautomation.com\",\"https:\\\/\\\/www.facebook.com\\\/ricky.bryce.7\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ricky-bryce-4367a416\\\/\"],\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/author\\\/ricky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hello World in Modern Assembly - Bryce Automation","description":"How to write Hello World in Modern Assembly. For this example, I'm using the GNU Assembler on a Debian Linux machine.","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:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/","og_locale":"en_US","og_type":"article","og_title":"Hello World in Modern Assembly - Bryce Automation","og_description":"How to write Hello World in Modern Assembly. For this example, I'm using the GNU Assembler on a Debian Linux machine.","og_url":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2022-12-26T00:55:22+00:00","article_modified_time":"2022-12-26T19:34:00+00:00","og_image":[{"width":771,"height":488,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-63.png","type":"image\/png"}],"author":"Ricky","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"Hello World in Modern Assembly","datePublished":"2022-12-26T00:55:22+00:00","dateModified":"2022-12-26T19:34:00+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/"},"wordCount":693,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-63.png","keywords":["Assembly","Hello World"],"articleSection":["Information Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/","url":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/","name":"Hello World in Modern Assembly - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-63.png","datePublished":"2022-12-26T00:55:22+00:00","dateModified":"2022-12-26T19:34:00+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"How to write Hello World in Modern Assembly. For this example, I'm using the GNU Assembler on a Debian Linux machine.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-63.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-63.png","width":771,"height":488,"caption":"Hello World in Modern Assembly"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/26\/hello-world-in-modern-assembly\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"Hello World in Modern Assembly"}]},{"@type":"WebSite","@id":"https:\/\/bryceautomation.com\/#website","url":"https:\/\/bryceautomation.com\/","name":"Bryce Automation","description":"Automating Home and Industry...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bryceautomation.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7","name":"Ricky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","url":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","caption":"Ricky"},"sameAs":["http:\/\/bryceautomation.com","https:\/\/www.facebook.com\/ricky.bryce.7","https:\/\/www.linkedin.com\/in\/ricky-bryce-4367a416\/"],"url":"https:\/\/bryceautomation.com\/index.php\/author\/ricky\/"}]}},"_links":{"self":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/14929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/comments?post=14929"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/14929\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/14933"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=14929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=14929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=14929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}