<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Couple의 이상한이야기</title>
		<link>http://couple.haruschool.com/tc/</link>
		<description></description>
		<language>ko</language>
		<pubDate>Tue, 16 Sep 2008 20:34:40 +0900</pubDate>
		<generator>Textcube 1.5.4 : Fermata</generator>
		<item>
			<title>[ruby] 메일 컨트롤하기(웹봇.컨트롤하기)</title>
			<link>http://couple.haruschool.com/tc/229</link>
			<description>&lt;table width=&quot;100%&quot;&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;table width=&quot;200&quot; height=&quot;200&quot; align=&quot;right&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;background-image:url(); background-repeat:no-repeat&quot;0&gt;
					&lt;tr&gt;
						&lt;td align=&quot;center&quot; valign=&quot;top&quot; style=&quot;padding-top:0px; padding-left:5px;&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-6152336487577593&quot;;
/* 250x250, 본분안 */
google_ad_slot = &quot;5648257947&quot;;
google_ad_width = 250;
google_ad_height = 250;
google_language = &quot;ko&quot;;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/td&gt;
					&lt;/tr&gt;
				&lt;/table&gt;&lt;P&gt;&lt;br /&gt;어떤제목을 붙여야할찌 한참을 고민하다 정한 제목이다&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;부득이하게 ruby를 이용해 개발을 해야할 일이 생겼다.&lt;br /&gt;결론은 대실패! 지만 인류의 마지막언어라고 불릴만큼&lt;br /&gt;&lt;br /&gt;정말 많은기능이 있고 정확히 어떤 기능들이 있는지 알고있다면&lt;br /&gt;무지 편하게 프로그래밍을 할수있을꺼같다라는 생각이 들었다&lt;br /&gt;&lt;br /&gt;나중에 기회가 된다면 제대로 배워보고싶다..^^&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;&lt;/P&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;STRONG&gt;싸이월드 사진첩 긁어오기&lt;/STRONG&gt;&lt;/STRONG&gt;&lt;br /&gt;ruby 포럼에서 이와같이 좋은 코드를 얻을수있었다.&lt;br /&gt;물론 지금은 되지않지만 처음접하는 나에게 많은걸 알려줄수있는 코드였다&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a class=&quot;extensionIcon&quot; href=&quot;http://couple.haruschool.com/tc/attachment/7767483878.rb&quot;&gt;&lt;img src=&quot;http://couple.haruschool.com/tc/image/extension/unknown.gif&quot; /&gt; cyworld_photos.rb&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;보면 아시겠지만 WWW::Mechanize.new 라이브러리(?)를 이용해서 작성되었다&lt;br /&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;STRONG&gt;hotmail 메일 읽어오고 읽지않음표기하기&lt;/STRONG&gt;&lt;/STRONG&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a class=&quot;extensionIcon&quot; href=&quot;http://couple.haruschool.com/tc/attachment/3194226405.rb&quot;&gt;&lt;img src=&quot;http://couple.haruschool.com/tc/image/extension/unknown.gif&quot; /&gt; hotmail.rb&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;TEXT-ALIGN: left&quot;&gt;유일하게 내마음대로 할수있다라고 생각되는 vb로 계발을 먼저시도해보았다.&lt;br /&gt;잘된다! 그래서 이 코드를 ruby처럼 변형하는 형태로 진행했는데&lt;br /&gt;이상하게도 마지막 submit 에서 제대로 코드가 작동하지 않는다.&lt;br /&gt;체크박스도 원하는걸 체크하는 기능도 미흡하다&lt;br /&gt;&lt;br /&gt;하지만 다른사람이 이코드를 보고 조금이나마 도움이 됬으면 하는 바램에 올려본다^^;&lt;br /&gt;&lt;br /&gt;ps 제 코드에 문제점에 뭔가 해답을 알고있는 분은 알려주시면 감사하겠습니다 ( __)!&lt;br /&gt;&lt;br /&gt;참고URL&lt;br /&gt;&lt;A href=&quot;http://forum.rubykr.org/&quot;&gt;http://forum.rubykr.org/&lt;/A&gt;&lt;br /&gt;&lt;A href=&quot;http://www.ruby-lang.org/ko/&quot;&gt;http://www.ruby-lang.org/ko/&lt;/A&gt;&lt;br /&gt;&lt;A href=&quot;http://www.ibm.com/developerworks/kr/library/opendw/20070724/&quot;&gt;http://www.ibm.com/developerworks/kr/library/opendw/20070724/&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/td&gt;
			&lt;/tr&gt;
				&lt;tr&gt;
						&lt;td align=&quot;center&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-6152336487577593&quot;;
/* 468x60, 본문하단 */
google_ad_slot = &quot;4204141623&quot;;
google_ad_width = 468;
google_ad_height = 60;
google_language = &quot;ko&quot;;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/td&gt;
				&lt;/tr&gt;&lt;/table&gt;</description>
			<category>code</category>
			<author>(Couple)</author>
			<guid>http://couple.haruschool.com/tc/229</guid>
			<comments>http://couple.haruschool.com/tc/229#entry229comment</comments>
			<pubDate>Sat, 14 Jun 2008 21:05:39 +0900</pubDate>
		</item>
		<item>
			<title>[vb] ComTv</title>
			<link>http://couple.haruschool.com/tc/227</link>
			<description>&lt;table width=&quot;100%&quot;&gt;
				&lt;tr&gt;
					&lt;td&gt;&lt;P&gt;080307 &lt;STRONG&gt;곰티비측 요청으로 인해 사용중지 및 삭제되었습니다..^^&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ComTv&lt;/STRONG&gt;&lt;br /&gt;곰티비에서 제공하는 영상들을 광고없이 볼수있도록 제작했습니다&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;사용법&lt;/STRONG&gt;&lt;br /&gt;원하는 영상에 페이지에 접속한뒤 이미지에 있는 플래이버튼대신&lt;br /&gt;프로그램 왼쪽상단에 있는 ★ 버튼을 눌러주시면 됩니다&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;수정&lt;/STRONG&gt;&lt;br /&gt;080215 스크립오류처리가 추가되었습니다&lt;br /&gt;080302 일부경고메세지에 대한 영상 최적화 작업을했습니다. (새로 받아서 쓰시길 권장해드립니다^^;)&lt;br /&gt;&lt;br /&gt;곰티비측 연락이 있을시 삭제및사용중지 처리 하도록하겠습니다&lt;br /&gt;&lt;br /&gt;오랜만에 플밍을 해서 많이 부족한부분도있습니다&lt;br /&gt;기타문의나 버그등은 리플에 적어주시면 감사하겠습니다&lt;br /&gt;08/02/08 제작 Couple&lt;br /&gt;&lt;br /&gt;&lt;IMG src=&quot;http://couple.haruschool.com/img/email.gif&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a class=&quot;extensionIcon&quot; href=&quot;http://couple.haruschool.com/tc/attachment/8903718114.xxx&quot;&gt;&lt;img src=&quot;http://couple.haruschool.com/tc/image/extension/unknown.gif&quot; /&gt; &lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Mswinsck.ocx 구성 요소나 종속성이 정확하게 등록되지 않았습니다. &lt;br /&gt;파일이 누락되었거나 잘못되었습니다. 라는 문구가 나올경우&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a class=&quot;extensionIcon&quot; href=&quot;http://couple.haruschool.com/tc/attachment/3916572102.ocx&quot;&gt;&lt;img src=&quot;http://couple.haruschool.com/tc/image/extension/unknown.gif&quot; /&gt; Mswinsck.ocx&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;vb6ko.dll 구성 요소나 종속성이 정확하게 등록되지 않았습니다. &lt;br /&gt;파일이 누락되었거나 잘못되었습니다. 라는 문구가 나올경우&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a class=&quot;extensionIcon&quot; href=&quot;http://couple.haruschool.com/tc/attachment/3603194008.dll&quot;&gt;&lt;img src=&quot;http://couple.haruschool.com/tc/image/extension/dll.gif&quot; /&gt; Vb6ko.dll&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://couple.haruschool.com/tc/attach/1/8312748171.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;437&quot; width=&quot;630&quot; /&gt;&lt;/div&gt;&lt;/P&gt;&lt;/td&gt;
				&lt;/tr&gt;&lt;/table&gt;</description>
			<category>project</category>
			<category>comtv</category>
			<category>곰티비 광고 넘어가기</category>
			<author>(Couple)</author>
			<guid>http://couple.haruschool.com/tc/227</guid>
			<comments>http://couple.haruschool.com/tc/227#entry227comment</comments>
			<pubDate>Sun, 02 Mar 2008 15:58:23 +0900</pubDate>
		</item>
		<item>
			<title>[C]#include를 조심하라!</title>
			<link>http://couple.haruschool.com/tc/35</link>
			<description>&lt;table width=&quot;100%&quot;&gt;
				&lt;tr&gt;
					&lt;td&gt;&lt;SPAN class=subject&gt;&lt;STRONG&gt;#include 모르면 간첩&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;br /&gt;&lt;SPAN class=body&gt;C를 비롯한 수많은 언어들이 공통적으로 가지고 있으면서, 그리고 프로그래밍 입문 당시부터 보게 되는 include라는 존재가 있다. 주로 다른 파일에서 선언된 함수나 변수, 상수값에 대한 정보를 가지고 있는데, 같은 데이터가 여러 파일에 걸쳐서 사용되는 경우에 유용하게 쓰인다.&lt;br /&gt;&lt;br /&gt;프로그래밍을 조금이라도 해본 사람이라면 누구나가 알겠지만, 이것을 사용하는데 있어서 주의하지 않으면 얼마나 많은 시간을 삽질해야 할지 모른다. 한번쯤 눈여겨봐두면 실무를 하다가 언젠가 한번쯤 써먹게 될만한 유용한 것이라 생각되어 또 몇자 적어본다. &lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN class=subject&gt;&lt;STRONG&gt;#include의 역할&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;br /&gt;&lt;SPAN class=body&gt;일단, C를 기준으로 설명하겠다. #include는 보통 헤더파일이라고 불리는 파일을 인클루드 한다. &lt;br /&gt;이 헤더파일은 보통 라이브러리로 제공되는 함수들의 원형들을 제공하고 있지만, 그외에도 #define 등으로 정의된 상수, 혹은 typedef 등으로 선언된 기타 데이터형이나 구조체 등을 담고 있기도 한다.&lt;br /&gt;&lt;br /&gt;입문시절에는 보통 한개의 소스파일로만 프로그래밍을 하기 때문에 라이브러리 사용을 위한 경우가 전부라 할 수 있다. 점차 자신만의 프로그램을 작성하기 위해서 한개 두개 소스파일들을 늘려가면서 자신만의 헤더파일들을 만들어 사용하게 된다.&lt;br /&gt;하지만 곧 문제에 부닺치게 된다. 왜냐하면 처음보는 컴파일 에러가 뜰 확률이 높기 때문이다. &lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;어떤 오류가 발생하길래..?&lt;br /&gt;&lt;/STRONG&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&lt;SPAN class=body&gt;hdr1.h 파일&lt;br /&gt;class DummyBase {&lt;br /&gt;private:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; int _i;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN class=body&gt;public:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; DummyBase(int i): _i(i) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; int Get() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _i;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; void Set(int i) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;_i = i;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;};&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN class=body&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&lt;SPAN class=body&gt;&amp;nbsp;hdr2.h 파일&lt;br /&gt;#include &quot;hdr1.h&quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; // hdr1.h 을 여기서 include 하고 있습니다&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN class=body&gt;class Dummy: DummyBase {&lt;br /&gt;public:&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Dummy(int i): DummyBase(i) {&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN class=body&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int operator() () {&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;return Get();&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN class=body&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int operator() (int multi) {&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;return Get() * multi;&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;br /&gt;};&lt;br /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;br /&gt;&lt;SPAN class=body&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&lt;SPAN class=body&gt;main.cpp 파일&lt;br /&gt;#include &quot;hdr1.h&quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // main.cpp 에서도 hdr1.h 을 include 하네요&lt;br /&gt;#include &quot;hdr2.h&quot;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN class=body&gt;int main()&lt;br /&gt;{&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DummyBase db(200);&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Dummy d(100);&lt;br /&gt;}&lt;/SPAN&gt;&lt;SPAN class=body&gt;&lt;br /&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;SPAN class=body&gt;&lt;br /&gt;main.cpp 에서 한번포함한 hdr1.h 의 헤더를 또 포함하게 되기때문에 에러를 내게된다&lt;/SPAN&gt;&lt;SPAN class=subject&gt;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;헤더파일의 중복정의 방지&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;br /&gt;&lt;SPAN class=body&gt;비록 파일은 분리되어 있어도 인클루드하게 되는 헤더파일의 내용들은 소스파일의 일부인 셈이다. 그래서 두번 이상 중복정의되는 경우가 쉽게 발생할 수 있다. &lt;br /&gt;&lt;br /&gt;그럼 어떻게 해야 중복을 피할수있을까?&lt;br /&gt;1) hdr1.h, hdr2.h 의 내용을 모두 main.cpp 에 옴긴다&lt;br /&gt;2) hdr1.h 의 내용을 hdr2.h 로 옮기고 main.cpp 에서는 hdr2.h 만 include 한다.&lt;br /&gt;3) 다른 건 다 그대로 놔두고 tips1.cpp 에서 hdr1.h 은 include 하지 않는다.&lt;br /&gt;&lt;br /&gt;작은프로그램이고 포함관계가 적다면 이렇게해도 해결될것이다. 하지만 그게 아니라 프로그램이 거대하고 포함관계가 복잡하다면 .. 그래도 이렇게 하는게 좋을까?&lt;br /&gt;파일을 나누는 이유를생각해보자. 과연 이게 현명한 선택인지..&lt;br /&gt;&lt;br /&gt;그럼 어떻게해야할까? 답은 좀 더 근본적인 방법은 모든 헤더 파일을 다음과 같이 작성하는 것이다&lt;br /&gt;&lt;br /&gt;&lt;FONT face=&quot;Courier New&quot;&gt;// 헤더 파일의 제일 첫 부분&lt;br /&gt;01: &lt;STRONG&gt;#ifndef HDR_H&lt;/STRONG&gt; &amp;nbsp; &amp;nbsp; // 헤더 파일명을 대문자한 매크로가 정의되어 있지 않으면&lt;br /&gt;02: &lt;STRONG&gt;#define HDR_H&lt;/STRONG&gt; &amp;nbsp; &amp;nbsp; // 헤더 파일명 매크로를 정의한다&lt;br /&gt;&lt;br /&gt;...... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// 헤더 파일 본 내용이 여기 들어갑니다&lt;br /&gt;&lt;br /&gt;03: &lt;STRONG&gt;#endif&lt;/STRONG&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// ifndef HDR_H 에 매치됩니다&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;&lt;br /&gt;그럼 이방법을 이용해 해결해보자&lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;hdr1.h 파일&lt;br /&gt;&lt;STRONG&gt;#ifndef HDR1_H&lt;br /&gt;#define HDR1_H&lt;/STRONG&gt;&lt;br /&gt;class DummyBase {&lt;br /&gt;private:&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int _i;&lt;br /&gt;public:&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DummyBase(int i): _i(i) {&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int Get() {&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;return _i;&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;void Set(int i) {&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;_i = i;&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;br /&gt;};&lt;br /&gt;&lt;STRONG&gt;#endif&lt;/STRONG&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;
&lt;P&gt;hdr2.h&lt;br /&gt;&amp;nbsp;파일&lt;br /&gt;#ifndef HDR2_H&lt;br /&gt;#define HDR2_H&lt;br /&gt;#include &quot;hdr1.h&quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; // hdr1.h 을 여기서 include 하고 있습니다&lt;br /&gt;&lt;br /&gt;class Dummy: DummyBase {&lt;br /&gt;public:&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Dummy(int i): DummyBase(i) {&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int operator() () {&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;return Get();&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;int operator() (int multi) {&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;return Get() * multi;&lt;br /&gt;&lt;SPAN class=body&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;br /&gt;};&lt;br /&gt;#endif&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;main.cpp 은 같으므로 생략하도록하자.&lt;br /&gt;이렇게 하면 main.cpp 에 있는 #include &quot;hdr1.h&quot; 는 포함하지않고 넘어가게 된다.&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;다중포함관계&lt;/STRONG&gt;&lt;br /&gt;&amp;nbsp;아래의 예제를 한번 보자. 데이터구조체 등이 정의된 datatype.h, 메인프로그램인 main.c와 그에 필요한 몇가지 정의가 되어 있는 main.h등이 있다. &lt;br /&gt;일반적으로 헤더파일들은 하나의 소스상에서 여러번 인클루드 될 수 있기 때문에 그런것을 방지하기 위해서 &lt;br /&gt;#ifndef, #define 등을 사용한다. 아래의 헤더파일들도 그런 방식으로 중복인클루드를 방지하고 있다.&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;
&lt;P&gt;define.h 파일 &lt;PRE&gt;#ifndef DEFINE_H // 중복인클루드 방지
#define DEFINE_H // 중복인클루드 방지

#include &quot;main.h&quot;	// DEFINE_BUS

#define DEFINE_CAR
#undef  DEFINE_PLANE

#ifdef DEFINE_BUS
#define CAR_TYPE	&quot;Bus&quot;
#define CAR_NUMBER	10
#else
#define CAR_TYPE	&quot;Taxi&quot;
#defien CAR_NUMBER	2
#endif


#endif // DEFINE_H // 중복인클루드 방지&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;자동차에 대한 정의파일이다. 버스에 대한 기능으로 동작하게 컴파일하고 싶으면, DEFINE_BUS을 define하면 되고, 그렇지 않으면 택시에 대한 기능으로 동작하게 컴파일이 된다.&lt;br /&gt;&lt;br /&gt;큰 프로젝트에서는 대부분 이런식으로 진행된다. 구버전이나 혹은 다른 모델의 프로그램에다 추가기능이 있다 싶으면 그 기능에 대한 것은 모두 #define 된 것을 이용해서 #ifdef 형식으로 코딩하게 된다. &lt;br /&gt;&lt;br /&gt;그렇게 코딩하면 유지보수가 쉬울 뿐 아니라, 동일한 소스로 두개 이상의 모델에 적용할 수 있고, 원할 때라면 언제라도 기능을 넣거나 빼는 것이 쉽기 때문이다. &lt;/P&gt;
&lt;P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;
&lt;P&gt;datatype.h &lt;PRE&gt;#ifndef DATATYPE_H
#define DATATYPE_H

#include &quot;define.h&quot;

typedef struct
{
	int number[ CAR_NUMBER ];
} DATA;

#endif // DATATYPE_H&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;br /&gt;여기서는 데이터 타입을 정의하고 있다. 그런데 자동차의 개수인 CAR_NUMBER가 필요하기 때문에 그것이 정의된 &quot;define.h&quot;를 인클루드 하고 있다. &lt;/P&gt;
&lt;P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;
&lt;P&gt;main.h 파일 &lt;PRE&gt;#ifndef MAIN_H	// 중복인클루드 방지
#define MAIN_H	// 중복인클루드 방지

#include &quot;datatype.h&quot;		// main.c에서 DATA 사용하기 위해 

#ifdef DEFINE_CAR
#define DEFINE_BUS
#define DEFINE_TAXI
#else
#define DEFINE_ROKET
#define DEFINE_AIRPLANE
#endif

#endif // MAIN_H // 중복인클루드 방지&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;메인 프로그램을 위한 헤더파일로 프로그램의 전체적인 설정내용이 들어 있다. 어떤 것이 정의되었고 정의되지 않았느냐에 따라서 프로그램 자체가 바뀌어버릴 수 있다. &lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&lt;br /&gt;main.c 파일 &lt;br /&gt;&lt;br /&gt;#include &quot;main.h&quot;&lt;br /&gt;&lt;br /&gt;void main(void)&lt;br /&gt;{&lt;br /&gt;　　int i;&lt;br /&gt;　　DATA data;&lt;br /&gt;&lt;br /&gt;　　for( i=0; i &amp;lt; CAR_NUMBER; i++ )&lt;br /&gt;　　　　data.number[i] = i;&lt;br /&gt;&lt;br /&gt;　　printf(&quot;%s&quot;, CAR_TYPE);&lt;br /&gt;}&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;메인 프로그램이다. 여기서 CAR_TYPE을 출력하게 된다. 무엇이 출력될까? 그리고 CAR_NUMBER는 무슨 값일까...? &lt;br /&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN class=subject&gt;&lt;br /&gt;중복인클루드로 인해 생길 수 있는 문제&lt;/SPAN&gt;&lt;br /&gt;&lt;/STRONG&gt;&lt;SPAN class=body&gt;위에서 예로 든바와 같이 각각의 헤더파일들은 중복인클루드를 방지하기 위한 코드가 거의 필수로 들어가게 되는데, 이것이 자칫잘못하면 큰 오류를 범할 수 있다. 위의 소스도 예외는 아니다. 다시 한번 잘 살펴보기 바란다. 컴파일이 제대로 될까? 
&lt;P&gt;위의 예제는 헤더파일이 꼬인 문제를 예제로 만들어보기 위해서 억지로 꾸민 것이긴 한데, 이런 경우 컴파일이 되지 않거나 원하지 않는 결과를 낳게 된다. &lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;
&lt;P&gt;main.c&lt;br /&gt;{&lt;br /&gt;　　main.h&lt;br /&gt;　　{&lt;br /&gt;　　　　datatype.h&lt;br /&gt;　　　　{&lt;br /&gt;　　　　　　define.h&lt;br /&gt;　　　　　　{&lt;br /&gt;　　　　　　　　main.h 인클루드 안됨&lt;br /&gt;　　　　　　　　#ifdef DEFINE_BUS&lt;br /&gt;　　　　　　　　#define CAR_NUMBER&lt;br /&gt;　　　　　　　　#define CAR_TYPE&lt;br /&gt;　　　　　　　　#endif&lt;br /&gt;　　　　　　}&lt;br /&gt;　　　　　　int number[CAR_NUMBER]; &lt;br /&gt;　　　　}&lt;/P&gt;
&lt;P&gt;　　　　#ifdef DEFINE_CAR&lt;br /&gt;　　　　#define DEFINE_BUS&lt;br /&gt;　　　　#define DEFINE_TAXI&lt;br /&gt;　　　　#else&lt;br /&gt;　　　　...&lt;br /&gt;　　　　#endif&lt;br /&gt;　　}&lt;br /&gt;}&lt;/P&gt;&lt;/DIV&gt;대략 위와 같은 구조로 실행된다. define.h 에서 DEFINE_BUS를 위해서 main.h를 인클루드 했다. 하지만 main.h는 이미 인클루드 되었었기 때문에 다시 인클루드를 할 수 없으나, #define DEFINE_BUS는 아직 실행되지 않은 상태이다.&lt;br /&gt;&lt;br /&gt;바로 이렇게 물고 물리는 관계로 헤더파일들이 서로서로 인클루드하게 되면 문제가 생길 수 있다는 것을 얘기해 주고 싶은 것이다. &lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN class=subject&gt;&lt;STRONG&gt;해결방법은......?&lt;br /&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;br /&gt;&lt;SPAN class=body&gt;말은 간단하다. 헤더파일들끼리는 서로를 인클루드 하지 않도록 하는 것이다. 즉, main.c에서 필요한 순서대로 헤더파일들을 죄다 인클루드 해주면 된다.&lt;br /&gt;큰 프로그램을 짜보지 않은 경우라면, 이런 상황을 이해하기 힘들지도 모른다. 그냥 머리좀 써서 헤더파일을 정리해주면 괜찮지 않은가 하고 말이다. 맞는 말이다. 위의 상황에서 헤더파일안의 내용들을 순서를 약간씩 조정해주면 해결은 가능하다.&lt;br /&gt;&lt;br /&gt;하지만 실전은 다르다. 소스파일과 헤더파일이 만개가 넘는 경우도 허다하게 있기 때문에 연결된 헤더파일들도 수백개 이상이 되곤 한다. 아니, 어쩌면 수천개 일지도 모른다. 한 사람이 모든 내용을 알고 작업을 했다면 얘기가 달라지겠지만, 몇년에 걸쳐 수십 수백명의 손을 거치는 경우도 있기에 아무도 장담은 못한다. 
&lt;P&gt;가급적 헤더파일들은 헤더파일들끼리 연결시키지 말고, 가급적 소스상에서만 인클루드 하길 권한다. 차라리 에러라도 나면 다행이지만, 원하지 않는 결과가 나왔을 경우에는 수천개의 파일을 뒤져보더라도 원인을 못찾을 수 있다. 위의 소스에서 출력결과가 &quot;Bus&quot;가 아니라, &quot;Taxi&quot;가 나오는 경우처럼 말이다. &lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN class=subject&gt;&lt;STRONG&gt;수십 수백개의 파일을 어떻게 다 하라고&lt;br /&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;br /&gt;&lt;SPAN class=body&gt;실전엔 수없이 많은 파일이 있다고 했다. 그렇다고 헤더파일을 죄다 소스파일에 인클루드하긴 사실 무리다. 이런 때에는 레이어별로 별도의 헤더파일을 구성하는 방법을 추천한다.&lt;br /&gt;&lt;br /&gt;프로그램의 모든 소스가 동등한 레벨에 있지는 않을 것이다. 예를 들어 전화번호부 프로그램이라면 화면입출력에 관련된 처리가 있을 것이고, 그 하위에 데이터 검색, 수정 같은 유틸개념이 있을 것이며, 그 하위에는 데이터를 실제로 조작관리하는 부분이, 그 하위에는 디스크에 직접 파일로 다루게 되는 부분도 있을 것이다. &lt;br /&gt;대부분의 소스는 각각 계층별로만 연계되도록 해야 하며, 이때 공통적으로 사용되는 헤더파일들을 모아서 한두개의 헤더파일로 모아서 사용하면 된다. 
&lt;P&gt;하지만 모든 헤더파일을 모으는 것이 가장 최선이라고는 할 수 없다. 아주 공통적인 헤더파일들만 모으고, 그 이외에는 소스에서 직접 인클루드 해주면 된다. &lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN class=subject&gt;&lt;STRONG&gt;항상 생각을 하고 살자&lt;br /&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;br /&gt;&lt;SPAN class=body&gt;만약 헤더파일들을 처음의 예제처럼 서로서로 인클루드 하더라도 제대로만 만든다면 문제가 없다. 헤더파일들 간에도 레이어 개념처럼 상위와 하위개념을 두고 제대로된 위치에 코딩을 한다면 별 문제가 없다.&lt;br /&gt;&lt;br /&gt;다만 코드가 길어지고, 그 와중에 대폭 수정을 하거나 구조를 변경하게 되면서부터 정리가 안되기 시작하는 경우가 많다. 코딩을 하다 지치면 귀차니즘(?)의 압박에 못이겨서 적당하지 못한 곳에 한줄 한줄이 들어가다보면 걷잡을 수 없게 된다.&lt;br /&gt;항상 코드를 넣기 전에 이곳이 적당한 곳인지 아닌지를 한번더 생각한 후에 작업을 한다면, 편리를 위한 작업내용이 오류로 돌아오는 왜곡된 경우가 좀 줄어들 수 있지 않을까 싶다. &lt;br /&gt;&lt;br /&gt;&lt;SPAN class=auth&gt;&lt;br /&gt;출처 및 참고&lt;br /&gt;http://chanywa.com&lt;br /&gt;&lt;A href=&quot;http://yesarang.tistory.com/64&quot;&gt;http://yesarang.tistory.com/64&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/td&gt;
				&lt;/tr&gt;&lt;/table&gt;</description>
			<category>tip &amp; effciency</category>
			<category>include</category>
			<author>(Couple)</author>
			<guid>http://couple.haruschool.com/tc/35</guid>
			<comments>http://couple.haruschool.com/tc/35#entry35comment</comments>
			<pubDate>Thu, 07 Feb 2008 16:35:25 +0900</pubDate>
		</item>
		<item>
			<title>[c,asm]인라인어셈블러</title>
			<link>http://couple.haruschool.com/tc/226</link>
			<description>&lt;table width=&quot;100%&quot;&gt;
				&lt;tr&gt;
					&lt;td&gt;&lt;br /&gt;여기서 CPU의 자세한 내부 구조를 설명과 어셈블리와 컴퓨터 구조등의 low level 에 대한 이야기는 하지 않겠습니다. 왜냐하면 하다 보면 자연히 알게 될것이고 인라인어셈블러라는 목표에 맞는 내용만 담기 위해서입니다&lt;br /&gt;(커플군의 실력,능력부족도 하나의 이유입니다 :D)&lt;br /&gt;&lt;br /&gt;간단하게만 얘기해 보면,&lt;br /&gt;CPU는 어떠한 처리를 할때, 기본적인 방식은&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;1. RAM에 있는 데이타를 CPU 안에 복사&lt;br /&gt;2. 이를 처리(연산)&lt;br /&gt;3. 결과를 다시 RAM에 저장.&lt;/STRONG&gt;&lt;br /&gt;&lt;br /&gt;이러한 과정을 거치게 됩니다.&lt;br /&gt;&lt;br /&gt;따라서, CPU 내부에는 RAM의 데이타를 읽어 와서 임시로 저장할 공간이 있는데 이 공간을 Register(레지스터) 라고 합니다.&lt;br /&gt;이 레지스터라의 크기는 32bit 즉 integer 값 하나정도를 저장할 공간 밖에 되지않습니다.&lt;br /&gt;불행중다행인지 이러한 Register가 하나로 부족해 몇개가 있습니다&lt;br /&gt;&lt;br /&gt;이들에게 이름을 붙였는데.&lt;br /&gt;EAX, EBX, ECX, EDX..&lt;br /&gt;&lt;br /&gt;등과 같은 방법으로 붙는다. (절때 아무의미없이 ABCD 순이 아니다)&lt;br /&gt;레지스터의 종류나 그 역활에 대해서는 차차 알아 보자.&lt;br /&gt;&lt;br /&gt;나중에시간이되면 이에 대한글도 포스트하겠지만&lt;br /&gt;보다 자세한 내용을 알고 싶은 분들은 어셈관련 참고서적을 참고하기 바랍니다 :) 
&lt;P&gt;이 번에는 소스를 한 번 살펴 봅시다&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;void memset ( void* dest, char fill, int num )&lt;br /&gt;{&lt;br /&gt;　　if (num &amp;lt;= 0) return;&lt;br /&gt;&lt;br /&gt;　　_asm&lt;br /&gt;　　{&lt;br /&gt;　　　　mov &amp;nbsp; al, fill&lt;br /&gt;　　　　mov &amp;nbsp; ecx, num&lt;br /&gt;　　　　mov &amp;nbsp; edi, dest&lt;br /&gt;　　　　rep &amp;nbsp; stosb&lt;br /&gt;　　}&lt;br /&gt;}&lt;/DIV&gt;
&lt;P&gt;일단 얼핏 보기에도 C 코드와 어셈 코드가 섞여 있다.&lt;br /&gt;잘 알 듯이 _asm { } 로 둘러 싸여 있는 부분이 어셈 코드입니다.&lt;br /&gt;&lt;br /&gt;그 안을 살펴 보면,&lt;br /&gt;&lt;br /&gt;mov, rep, stosb 는 cpu 명령어 이고&lt;br /&gt;al, ecx, edi 는 register(레지스터) 입니다. &lt;br /&gt;&lt;br /&gt;fill, num, dest 는 변수 입니다.&lt;br /&gt;변수를 CPU가 어찌 알겠냐고 물어보겠지만 고맙게도 컴파일러가 변수들을 각 변수들의 주소로 변환해 줍니다.&lt;br /&gt;이러한 것은 디버깅시에 살펴 보면 알 수 있으니 그때 살펴보도록합시다.&lt;br /&gt;&lt;br /&gt;잠시 위 코드의 뜻을 살펴 보면&lt;br /&gt;&lt;br /&gt;fill 변수의 값을 al 레지스터로 옮겨 오고,&lt;br /&gt;num 변수의 값을 ecx 레지스터로 옮겨 오고,&lt;br /&gt;dest 변수의 값을 edi 레지스터로 옮겨 오고,&lt;br /&gt;(여기서 dest 변수의 값을 타입에서 알수 있듯이 포이터입니다.)&lt;br /&gt;&lt;br /&gt;반복을 하라 - rep&lt;br /&gt;어떻게?&lt;br /&gt;al 레지스터의 값을 &lt;br /&gt;edi 레지스터에 있는 주소로 &lt;br /&gt;ecx 레지스터의 값 만큼 반복해서 저장해라. - stosb&lt;br /&gt;&lt;br /&gt;아마도 이런뜻일 것입니다.&lt;br /&gt;&lt;br /&gt;이 내용을 종합해보면 우리가 자주 사용하는 memset 함수를 한 번 만들어 본 것임을 알수있습니다.&lt;br /&gt;다음에는 memcpy 를 한 번 만들어 보도록합시다 :)&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;요약 어셈 명령어&lt;br /&gt;MOV&lt;br /&gt;&lt;br /&gt;이 명령어는 데이타를 옮길때 사용한다,&lt;br /&gt;1. 레지스터에 특정 값을 넣거나,&lt;br /&gt;2. 레지스터에서 레지스터로 값을 옮기거나,&lt;br /&gt;3. 메모리(RAM)에 있는 값을 레지스터로 가져 오거나,&lt;br /&gt;4. 레지스터에서 메모리(RAM)로 데이타를 옮길때....&lt;br /&gt;&lt;br /&gt;애석하게도 MOV는 메모리(RAM)에서 메모리(RAM)으로 &lt;br /&gt;바로 데이타를 옮기지는 못한다.&lt;br /&gt;&lt;br /&gt;ex) &amp;nbsp;MOV &amp;nbsp;al, 10 &amp;nbsp; &amp;nbsp;// al 레지스터에 10이라는 값을 넣어라.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; MOV &amp;nbsp;ebx, eax &amp;nbsp; // eax 레지스터의 값을 ecx 레지스터에 넣어라.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; MOV &amp;nbsp;ecx, [edi] // edi 레지스터가 가리키는 주소(RAM)에 있는 값을 ecx로 가져 와라.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; MOV &amp;nbsp;[edi], ecx &amp;nbsp;// ecx 레지스터에 있는 값을 edi 레지스터가 가리키는 주소(RAM)로 옮겨라.&lt;br /&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;br /&gt;자 이번에는 memcpy를 한 번 만들어 봅시다.&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;void memcpy ( void* dest, void* src, int num )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (num &amp;lt;= 0) return;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _asm&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; edi, dest&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; esi, src&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; ecx, num&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cld&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rep &amp;nbsp; movsb&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/DIV&gt;
&lt;P&gt;한 번 분석해 봅시다.&lt;br /&gt;edi, eax, esi, ecx 는 레지스터 일테고,&lt;br /&gt;mov, cld, rep, movsb 는 cpu 명령어 일것이고&lt;br /&gt;dest, src, num은 변수 입니다.&lt;br /&gt;&lt;br /&gt;edi 에 dest 변수 값을 넣고,&lt;br /&gt;esi 에 src 변수 값을 넣고,&lt;br /&gt;ecx 에 num 변수값을 넣을 테고,&lt;br /&gt;음 cld 는 뭘까? 일단은 건너뛰고 다음부터 하도록하죠.&lt;br /&gt;rep는 ecx 값만큼 반복하라는 뜻이고, &lt;br /&gt;(그럼, ecx에 num 값이 있으니, num 만큼 반복하겠지요?)&lt;br /&gt;저번에는 stosb 였는데 이번에는 movsb 이네요&lt;br /&gt;&lt;br /&gt;stosb 는 al 의 값을 edi 주소에 저장하는 것이고,&lt;br /&gt;movsb 는 esi주소의 값을 edi 주소로 옮기는 명령어입니다..&lt;br /&gt;그런뒤, esi의 값과 edi 값을 하나씩 증가 시키게됩니다.&lt;br /&gt;&lt;br /&gt;이를 종합해 보면,&lt;br /&gt;rep movsb 는 esi 주소의 값을 edi 주소로 ecx 갯수만큼 옮기는 역활을 하게됩니다&lt;br /&gt;우리가 알고 있는 memcpy 함수와 동일한 역활을 하는 것이지요 :)&lt;br /&gt;&lt;br /&gt;여기서 우리는 esi 레지스터는 소스 주소, &lt;br /&gt;edi 레지스터는 목적지의 주소를, &lt;br /&gt;ecx 레지스터는 카운트의 용도로 쓰임을 볼 수 있습니다&lt;br /&gt;&lt;br /&gt;프로그래머가 레지스터를 어떻게 사용할 것이냐는 개인이 알아서 결정할 문제이지만, 대부분 위와 같은 역활로 쓰입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이제 위에서 지나간 cld 에 대해서 알아 보도록합시다&lt;br /&gt;레지스터에는 여러 종류의 레지스터가 있는데 그 중 플래그레지스터 라는 것이 있습니다&lt;br /&gt;이 놈은 자신의 각 비트가 하나의 상태를 나타낸다. &lt;br /&gt;(하나의 비트 이므로 0 아니면 1 의 값만을 갖는다.)&lt;br /&gt;이 놈은 cpu 의 명령이 실행될때마다.....그 결과에 대한 상태의 변화를 기록한다.&lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;mov &amp;nbsp; edi, dest&lt;/DIV&gt;
&lt;P&gt;라는 명령을 실행했다고 하면, &lt;br /&gt;&lt;br /&gt;플래그 레지스터의 상태를 나타내는 플래그에는 &lt;br /&gt;&lt;STRONG&gt;OF (Overflow가 발생했으면 set)&lt;br /&gt;DF (방향- set되었을때 esi,dei 감소)&lt;br /&gt;ZF (Zero- 실행 결과가 0이면 set)&lt;br /&gt;CF (Carry- 실행 결과가 자리 올림이 발생했으면 set)&lt;/STRONG&gt;&lt;br /&gt;등등이 있다.&lt;br /&gt;&lt;br /&gt;그 사용예는 앞으로 아주 자주 볼것입니다. 그 중 설명이 모호한 DF를 한 번 살펴보도록합시다&lt;br /&gt;위에서 살펴본 movsb 가 데이타를 옮긴후 esi, edi 값을 하나씩 증가 시킨다고 했습니다.&lt;br /&gt;사실은, 이 DF 플래그 값에 따라 값을 증가시킬것인가 감소시킬것인가를 정하게됩니다&lt;br /&gt;&lt;br /&gt;즉, DF 가 0 이면 esi, edi 의 값을 증가 시키고,&lt;br /&gt;&amp;nbsp; &amp;nbsp; DF 가 1 이면 esi, edi 의 값을 감소 시킨다.&lt;br /&gt;&lt;br /&gt;cld 라는 명령어는 이 DF 플래그의 값을 0으로 세팅한다.&lt;br /&gt;std 라는 명령도 있느데 이는 DF 플래그를 1로 세팅한다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;자 그럼 위의 명령들을 한 번 확장해 보도록합시다&lt;br /&gt;&lt;br /&gt;movsb 라는 명령어에서 마지막 b는 byte 만큼씩 옮기라는 뜻입니다.&lt;br /&gt;그렇다면 movsw 도 있고, movsd도 있습니다&lt;br /&gt;여기서 w = word 를 d = double word 를 의미합니다&lt;br /&gt;&lt;br /&gt;실제 우리가 사용하는 memcpy 코드는 아래와 같다.&lt;br /&gt;한 번 생각해보면 좋을꺼같다.&lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;void memcpy ( void* dest, void* src, int num )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (num &amp;lt;= 0) return;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _asm&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; edi, dest&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; eax, edi&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; esi, src&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; ecx, num&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; edx, ecx&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; shr &amp;nbsp; ecx, 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; shr &amp;nbsp; ecx, 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cld&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rep &amp;nbsp; movsd&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; ecx, edx&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; and &amp;nbsp; ecx, 0x03&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rep &amp;nbsp; movsb&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;br /&gt;이번에는 플래그 레지스터가 어떻게 활용되는지를 한 번 살펴 보도록합시다&lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;void &amp;nbsp; strcpy (char* dest, char* src)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_asm&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; edi, src&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; ecx, 0xffffffff&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xor &amp;nbsp; al, al&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cld&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; repnz scasb&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; not &amp;nbsp; ecx&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;/DIV&gt;
&lt;P&gt;자.. 이제 거의 다 아는 것들이 눈에 보이기 시작한다.&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;xor 은 배타적 논리합으로 상반된 비트일때만 set(1) 을 해줍니다&lt;/STRONG&gt;&lt;br /&gt;예를들어&lt;br /&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 0101001&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; xor 1011000&lt;br /&gt;&amp;nbsp;&amp;nbsp; -------------&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 1110001&lt;/DIV&gt;
&lt;P&gt;이해가 되시나요? 근대..xor al, al 왜 자신을 xor 했을까요?&lt;br /&gt;같은레지스터를 xor 하면 0이 될텐데 말이죠,&lt;br /&gt;&lt;br /&gt;네, 생각하신대로 이 코드는 mov al, 0 과 같습니다.&lt;br /&gt;근데 왜 mov 를 쓰지않고 xor 을 쓰냐면 속도면에서 매우 빠르기 때문입니다.&lt;br /&gt;&lt;br /&gt;따라서 거의 이렇게 사용하는 코드&lt;br /&gt;&lt;STRONG&gt;레지스터 값을 0으로 세팅할때 xor 연산을 하게 됩니다.&lt;/STRONG&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;아주 반가운 rep (repeat,반복하라),&lt;br /&gt;근데, 이번에는 뒤에 nz 가 붙었다.&lt;br /&gt;그 뜻은 (not zero)...이고, 이를 Repeat와 합해 보면,&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;repnz = Repeat While not zero &amp;nbsp; ( 0 이 아닐 동안 반복하라 )&lt;/STRONG&gt;&lt;br /&gt;&lt;br /&gt;여기서 Not Zero 라는 것은 앞서 실행한 명령의 결과가 0 이 아닐때,&lt;br /&gt;만약 실행한 결과가 0이면 플래그레지스터의 ZF(zero flag)가 1로 세팅되어 있을 것입니다.&lt;br /&gt;0 이 아닐때이므로 플래그레지스터의 ZF(zero flag)가 0일때라는 뜻입니다&lt;br /&gt;&lt;br /&gt;rep는 반복할때마다 ecx 값을 하나씩 빼나간다 그러다 ecx = 0 이 되면 반복을 중단하며&lt;br /&gt;repnz 는 ecx = 0 일때도 중단하고, ZF = 1 일때도 중단하게됩니다.&lt;br /&gt;&lt;br /&gt;카운트 만큼 반복하는 것은 C에서 &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; for(int i=0;i&amp;lt;cnt;i++ ) { }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;특정조건동안 반복하는 것은&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; while (a != 0) { } &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;뭐 이런 구문들을 생각나게 합니다.&lt;br /&gt;&lt;br /&gt;드디어 반복문에 쓰이는 조건문을 이해하는순간이네요 ^^*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;그 다음, scasb 는 Scan String의 뜻으로 &amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; al - [edi] (edi가 가리키는 주소의 값)&lt;/STRONG&gt; &lt;br /&gt;&lt;br /&gt;연산한 결과를 가지고 플래그 레지스터의 값들을 바꾼고 edi 값을 하나 증가 시킵니다. &lt;br /&gt;물론, 그 결과값이 0 이면 ZF 플래그를 1 로 세팅합니다. &lt;br /&gt;&lt;br /&gt;바로 이놈이 반복을 멈추게 하는 녀석입니다.&lt;br /&gt;즉, 조건절을 만들어 내는 부류의 명령이지요 :)&lt;br /&gt;&lt;br /&gt;&lt;/P&gt;이러한 조건문은&lt;br /&gt;&lt;STRONG&gt;1. 어떤 명령이....실행결과로써 플래그 레지스터를 건든다. (값을 바꾼다)&lt;br /&gt;2. 뒤에서 이 플래그의 조건 (플래그의 값)에 따라 분기를 하거나 반복을 한다.&lt;/STRONG&gt;&lt;br /&gt;&lt;br /&gt;의 순을 따르게 됩니다.&lt;br /&gt;&lt;br /&gt;위 소스를 정리하면,&lt;br /&gt;ecx에 0xffffffff를 넣고, al에 NULL을 넣고,&lt;br /&gt;NULL을 찿을때까지 반복해서 ecx값을 빼 나갑니다&lt;br /&gt;NULL을 찿고 난뒤 ecx 값을 not 연산을 합니다&lt;br /&gt;그러면, ecx에 src의 문자열에서 NULL까지의 문자수가 나오게됩니다 :)&lt;br /&gt;&lt;br /&gt;ecx값을 return 하면 바로 strlen 함수가 된는것이지요!&lt;br /&gt;그리구 부분에 memcpy 기능을 붙여 넣으면 (ecx 만큼 memcpy를 하면) 바로 strcpy 함수가 완성되는 것이다.&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;ecx에 0xffffffff 값을 넣고 빼 나가다가 이를 not 연산하면 원하는 카운트를 얻는 코드&lt;/STRONG&gt;는 자주쓰이니 잘알아두자!&lt;br /&gt;&lt;br /&gt;strcpy 의 나머지 부분은 여러분들이 완성해보세요 :D&lt;br /&gt;&lt;br /&gt;이번에는 ZeroMemory 함수를 작성해봅시다&lt;br /&gt;이 함수 굳이 설명을 하지 않아도 memset과 자주 쓰이는 0으로의 초기화 함수중에 하나 입니다 :D 이것을 이번에 인라인 어셈으로 바꾸어 보도록합시다! &lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;push ebp &lt;br /&gt;mov esp,ebp &lt;br /&gt;.. &lt;br /&gt;.. &lt;br /&gt;pop ebp &lt;br /&gt;ret &lt;/DIV&gt;&lt;br /&gt;그리고 여기에 쓰이는 최소한의 스택 2개들 그리고 &lt;br /&gt;수를 알수 없는 cmp 명령어의 사용 &lt;br /&gt;&lt;br /&gt;위의 코드는 함수의 전형적인 코드가 될것입니다. &lt;br /&gt;이것들을 없에고 좀더 간단하게 코드를 줄여 보자!! 입니다. &lt;br /&gt;아! 루프안이라면 아무래도 함수 보단 매크로 쪽이 좋을 듯 합니다.. &lt;br /&gt;(왜 인지는 한번 생각해 보심이 제 생각은 밑에 적겠습니다.) &lt;br /&gt;&lt;br /&gt;우선 4의 배수의 크기를 가진 메모리를 초기화 하도록 합시다 &lt;br /&gt;타입을 2가지로 나누어야 합니다. &lt;br /&gt;우선 포인터인것과 일반 적인 변수 형태 입니다. &lt;br /&gt;코드 상에는 크게 차이는 없습니다. 그럼 적어 보도록 합니다&lt;br /&gt;크기가 4의 배수 라면 &lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;xor eax,eax &lt;br /&gt;mov ecx,크기 &lt;br /&gt;shr ecx,2 &lt;br /&gt;mov edi,주소 or lea edi,변수 &lt;br /&gt;rep stosd &lt;/DIV&gt;&lt;br /&gt;이것 입니다. &lt;br /&gt;코드를 설명 하면 &lt;br /&gt;&lt;br /&gt;xor eax,eax&amp;nbsp; // eax 를 0 으로 set해줍니다. 아까도 이야기했었죠? :)&lt;br /&gt;&lt;br /&gt;mov ecx,크기 &lt;br /&gt;이곳에는 크기를 넣어 주시면 됩니다. 직접 수를 적어 주셔도 되고 변수로도 가능합니다. 만약 변수의 이름이 length 라면 mov ecx,length 이런 식으로 해주셔도 됩니다.&lt;br /&gt;&lt;br /&gt;shr ecx,2 &lt;br /&gt;이것은 4로 나누어 주기 위한 코드 입니다. 오른쪽으로 2번 쉬프트는 4로 나눈것과 같다는건 다들아시죠? :)&lt;br /&gt;&lt;br /&gt;mov edi,주소 or lea edi,변수 &lt;br /&gt;&lt;br /&gt;edi 에는 변수의 주소가 꼭 들어 가야 합니다. 즉 0으로 채워질 메모리 주소 입니다. mov는 뭔지 아시리라 보고 설명을 하지 않겠습니다, lea는 그 변수의 주소를 넣어 줍니다. 만약 메모리 변수 이름이 buff 라면(포인터 변수는 아닙니다.) lea edi,buff 로 해주시면 됩니다. 변수 타입에 따라 2개 중에 하나를 쓰시기 바랍니다. &lt;br /&gt;&lt;br /&gt;rep stosd &lt;br /&gt;가장 중요한 코드 인데 다시한번 자세히 설명해보도록합시다 &lt;br /&gt;굳이 풀자면 rep(eat) sto(re)s(tring)d(word)입니다. &lt;br /&gt;반복해서(repeat) 저장해라(store) 문자열을(string) Dword로(Dword) &lt;br /&gt;주 요는 edi에 eax를 ecx 만큼 저장 하라는 말입니다. Dword는 4바이트 입니다. &lt;br /&gt;&lt;br /&gt;그러니까 eax전체가 edi의 주소로 복사가 됩니다.(eax는 4바이트이기 때문입니다.) 좀 부실 한것 같아서 재차 설명을 드리자면 eax는 4바이트 입니다 &lt;br /&gt;그런데 지금 위에서는 4바이트로 저장을 하죠? 그러니까 eax전체가 저장이 되는 것입니다. &lt;br /&gt;만약 eax가 0x00FF00FF라면 그대로 0x00FF00FF가 저장이 되는 것입니다. &lt;br /&gt;&lt;br /&gt;xor eax,eax &lt;br /&gt;mov ecx,크기 &lt;br /&gt;mov edi,주소 or lea edi,변수 &lt;br /&gt;&lt;br /&gt;이부분은 &amp;nbsp; &lt;br /&gt;&lt;br /&gt;rep stosd &lt;br /&gt;&lt;br /&gt;이 부분을 실행하기 위해 초기화 해준다고 생각 하시면 될 듯 합니다&lt;br /&gt;자 이제는 나머지 4의 배수가 아닌 부분을 생각 해보죠. 이것도 보시면 아하 하실 정도로 간단 합니다. &lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&lt;br /&gt;mov eax,0 &lt;br /&gt;mov ecx,크기 &lt;br /&gt;mov edx,ecx &lt;br /&gt;shr ecx,2 &lt;br /&gt;mov edi,주소 or lea edi,변수 &lt;br /&gt;rep stosd &lt;br /&gt;&lt;br /&gt;mov ecx,edx &lt;br /&gt;and ecx,03 &lt;br /&gt;rep stosb &lt;br /&gt;&lt;/DIV&gt;&lt;br /&gt;입니다. &lt;br /&gt;약간의 차이는 있지만 거의 비슷 하죠? &lt;br /&gt;우선 추가된 코드를 보죠 &lt;br /&gt;mov edx,ecx 임시적으로 크기를 저장한것입니다. &lt;br /&gt;&lt;br /&gt;mov ecx,edx &lt;br /&gt;and ecx,03 &lt;br /&gt;이것은 4로 나눈 나머지를 구하는 것입니다. &lt;br /&gt;어떻게 되는지는 생각 해보세요 :D(이런 무책임한!!)&lt;br /&gt;&lt;br /&gt;rep stosb &lt;br /&gt;rep(eat) sto(re)s(tring)b(yte)입니다. 대충 무슨 말인지 알겠죠?&lt;br /&gt;부실하지만 여기까지 입니다&lt;br /&gt;내친김에 이것을 매크로로 만들어 쓰시면 괜찮을듯 합니다 :D&lt;br /&gt;&lt;br /&gt;이제 조건문에 대해서 한 번 알아 봅시다.&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;for (int i=0; i&amp;lt;10; i++)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; ...&lt;br /&gt;}&lt;/DIV&gt;&lt;br /&gt;우리가 C 에서 보는 가장 흔한 문장 중에 하나입니다.&lt;br /&gt;&lt;br /&gt;for 문을 살펴보면, &lt;br /&gt;1. 초기값 설정 &amp;nbsp;( int i=0; )&lt;br /&gt;2. 조건부 &amp;nbsp; &amp;nbsp; &amp;nbsp; ( i &amp;lt; 10; )&lt;br /&gt;3. 반복부분 &amp;nbsp; &amp;nbsp; ( i++; )&lt;br /&gt;&lt;br /&gt;이렇게 나눌 수 있다!&lt;br /&gt;&lt;br /&gt;먼저, 초기값 설정부문 (int i=0;) 은&lt;br /&gt;mov &amp;nbsp;eax, i&lt;br /&gt;xor &amp;nbsp;eax, eax &lt;br /&gt;&lt;br /&gt;로 바꾸면 될 듯 하네요.&lt;br /&gt;&lt;br /&gt;다음 조건부 ( i &amp;lt; 10; )&lt;br /&gt;복잡할 것 같으니 나중에 보도록합시다&lt;br /&gt;&lt;br /&gt;반복부분 (i++;) 은&lt;br /&gt;inc &amp;nbsp;i&lt;br /&gt;대충 합한 코드를 보면서 조건부분을 살펴보도록하자.&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;mov eax, i &amp;nbsp; &amp;nbsp; &amp;nbsp;// 초기값 세팅 부분 (i=0;)&lt;br /&gt;xor eax,eax &amp;nbsp; &amp;nbsp; //&lt;br /&gt;mov i,eax &amp;nbsp; &amp;nbsp; &amp;nbsp; //&lt;br /&gt;loop_part: &amp;nbsp;&amp;lt;-- 이게 뭔지는 알겠지? (위치를 표시하는 라벨)&lt;br /&gt;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp; ...&lt;br /&gt;inc i &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 반복부분 &amp;nbsp;(i++;)&lt;br /&gt;mov edx,i &amp;nbsp; &amp;nbsp; &amp;nbsp; // 조건부분 &amp;nbsp;(i&amp;lt;10;)&lt;br /&gt;cmp edx, 0x0a &amp;nbsp; //&lt;br /&gt;jl &amp;nbsp;loop_part &amp;nbsp; //&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;cmp 라는 명령어가 보이네요.&lt;br /&gt;cmp = Compare (비교하라) &lt;br /&gt;cmp edx, 10 &amp;nbsp;== &amp;nbsp;(edx - 10) 연산을 해서 플레그 값들을 세팅하게되므로&lt;br /&gt;(edx-10)이 0보다 작으면 SF(Sign Flag,부호플래그)=1 이 될 것입니다.&lt;br /&gt;&lt;br /&gt;jl = Jump Less (작으면 분기하라)&lt;br /&gt;&lt;br /&gt;cmp edx, 0x0a&lt;br /&gt;jl &amp;nbsp;loop_part == &amp;nbsp;edx 가 0x0a 보다 작으면 loop_part로 이동하라.&lt;br /&gt;&lt;br /&gt;결국 loop_part 부분을 반복하게 될것입니다.&lt;br /&gt;&lt;br /&gt;여기서 조건관련 수식어들을 살펴 보도록하자.&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;JE &amp;nbsp;= Jump Equal &amp;nbsp; &amp;nbsp; ( 같으면 분기하라)&lt;br /&gt;JNE = Jump Not Equal (같지 않으면 ...)&lt;br /&gt;JL &amp;nbsp;= &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Less &amp;nbsp; &amp;nbsp; &amp;nbsp;( 작으면 ... )&lt;br /&gt;JNL = &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Not Less &amp;nbsp;&lt;br /&gt;JG &amp;nbsp;= &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Greater &amp;nbsp; ( 크면 ... )&lt;br /&gt;JS &amp;nbsp;= &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; Sign &amp;nbsp; &amp;nbsp; &amp;nbsp;( (-)마이너스 이면 ... )&lt;br /&gt;JZ &amp;nbsp;= &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Zero &amp;nbsp; &amp;nbsp; &amp;nbsp;( 0 이면... )&lt;br /&gt;&lt;/DIV&gt;&lt;br /&gt;간단한 영어약자만 눈익힌다면 별거 아니다. (^_^)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;while 문도 한 번 살펴 보자&lt;br /&gt;While 문과 For 문과 비교해 보면 초기값설정부와 반복부분이 없으니 오히려 더 쉽지않을까?&lt;br /&gt;그 외는 아마도 동일할 것이다.&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;while (i&amp;gt;0)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;} &lt;/DIV&gt;&lt;br /&gt;이를 코드로 바꾸면...&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;loop_part: (라벨)&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;mov &amp;nbsp; eax, i&lt;br /&gt;test &amp;nbsp;eax,eax&lt;br /&gt;jnle &amp;nbsp;loop_part&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;별루 설명할 것도 없겠지만&lt;br /&gt;test = Logical Compare &lt;br /&gt;test eax,eax 는 eax 와 eax를 논리적 AND 연산하여 그 결과로 플래그들을 세팅합니다.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;여기서 하나 재밋는문제를 내보겠다 :D&lt;br /&gt;jnle 와 jg 는 무엇이 다를까?&lt;br /&gt;&lt;br /&gt;즉 &quot;작지도않고 같지도 않을때(초과)일때 점프하라&quot; 와 &quot;클때 점프하라&quot; 의 차이점은 무엇이냐는것이다.&lt;br /&gt;&lt;br /&gt;답은 둘다 같은명령어입니다.&lt;br /&gt;이와 비슷한 명령어들이 있습니다&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;JG &amp;nbsp;= JNLE&lt;br /&gt;JLE = JNG&lt;br /&gt;JNL = JGE&lt;br /&gt;JNGE = JL&lt;br /&gt;JPO = JNP&lt;br /&gt;JP = JPE&lt;br /&gt;JNBE = JA&lt;br /&gt;JNA = JBE&lt;br /&gt;JNZ = JNE&lt;br /&gt;JE = JZ &amp;nbsp; &amp;nbsp;&amp;nbsp; // 비교하는 대상들의 차가 0이면 같은거겠죠?&lt;br /&gt;JAE = JNB&lt;br /&gt;JNAE = JB&lt;/DIV&gt;&lt;br /&gt;는 서로 같습니다&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;앞에서는 if 문과 while문을 살펴 보았습니다&lt;br /&gt;이번에는 switch 문을 한 번 살펴 보도록합시다&lt;br /&gt;&lt;br /&gt;c 로 된 아래와 같은 코드가 있다고 생각해 보자!&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;&amp;nbsp; switch (x)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; case 0:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf &amp;nbsp;(&quot;강태공 0&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;&amp;nbsp; &amp;nbsp; case 2:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf (&quot;강태공 2&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;&amp;nbsp; &amp;nbsp; case 3:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf (&quot;강태공 3&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;&amp;nbsp; &amp;nbsp; case 8:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf (&quot;강태공 8&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;&amp;nbsp; &amp;nbsp; default:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf (&quot;강태공 default&quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;&amp;nbsp; };&lt;/DIV&gt;&lt;br /&gt;이를 어셈으로 바꾸면 아래와 같이 됩니다.&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;mov &amp;nbsp; edx, x&lt;br /&gt;sub &amp;nbsp; edx, 0x01&lt;br /&gt;jb &amp;nbsp; &amp;nbsp;case_0&lt;br /&gt;dec &amp;nbsp; edx&lt;br /&gt;jz &amp;nbsp; &amp;nbsp;case_2&lt;br /&gt;dec &amp;nbsp; edx&lt;br /&gt;jz &amp;nbsp; &amp;nbsp;case_3&lt;br /&gt;sub &amp;nbsp; edx,0x05&lt;br /&gt;jz &amp;nbsp; &amp;nbsp;case_8&lt;br /&gt;jmp &amp;nbsp; case_default&lt;br /&gt;&lt;br /&gt;case_0: (라벨)&lt;br /&gt;&amp;nbsp; ...&lt;br /&gt;&lt;br /&gt;case_2: (라벨)&lt;br /&gt;&amp;nbsp; ...&lt;br /&gt;&lt;br /&gt;case_3: (라벨)&lt;br /&gt;&amp;nbsp; ...&lt;br /&gt;&lt;br /&gt;case_8: (라벨)&lt;br /&gt;&amp;nbsp; ...&lt;br /&gt;&lt;br /&gt;case_default: (라벨)&lt;br /&gt;&amp;nbsp; ...&lt;br /&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;이제 구지 설명하지 않아도 잘 알것이라 믿습니다 :D&lt;br /&gt;&lt;br /&gt;switch 문이라서 별다를것 같지만, 막상 코드를 보면 별 다른것이 없습니다.&lt;br /&gt;실망하셨나요? :(&lt;br /&gt;&lt;br /&gt;if/while/switch 문을 어셈으로 표현해 보면서&lt;br /&gt;반대로 C 에서의 이들 구문의 특성을 알 수 있었습니다.&lt;br /&gt;요즈음과 같이 펜티엄 4가 대세인 시대에 이들 구문들을 속도때문에 구분해서 사용한다는 것은 별 의미가 없을 수 있습니다&lt;br /&gt;하지만, 혹시라도 속도를 고려해야할경우나, 좀더 손이더많이가는 구현이 필요한경우, 운영체제같은 프로그램을 작성할때라면 우리가 지금까지 한 이야기들은 절때 헛되지 않을것입니다 :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;마지막으로..&lt;br /&gt;&lt;br /&gt;이 쯤에서, 정리할 겸해서 CPU 명령들을 한 번 전체적으로 살펴 봐야할 것 같습니다&lt;br /&gt;간단히 눈으로도 알아맞출수있는 명령어들이 많습니다.&lt;br /&gt;명령어들만 나열할테니 자세한 것들을 알아내는건 여러분들에게 맏기도록하겠습니다 :D&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9&quot;&gt;1. 데이타 전송 명령들&lt;br /&gt;&lt;br /&gt;CMOVE/CMOVZ&lt;br /&gt;CMOVNE/CMOVNZ&lt;br /&gt;CMOVA/CMOVNBE&lt;br /&gt;CMOVAE/CMOVNB&lt;br /&gt;CMOVB/CMOVNAE&lt;br /&gt;CMOVBE/CMOVNA&lt;br /&gt;CMOVG/CMOVNLE&lt;br /&gt;CMOVGE/CMOVNL&lt;br /&gt;CMOVL/CMOVNGE&lt;br /&gt;CMOVLE/CMOVNG&lt;br /&gt;CMOVC&lt;br /&gt;CMOVNC&lt;br /&gt;CMOVO&lt;br /&gt;CMOVNO&lt;br /&gt;CMOVS&lt;br /&gt;CMOVNS&lt;br /&gt;CMOVP/CMOVPE&lt;br /&gt;CMOVNP/CMOVPO&lt;br /&gt;XCHG&lt;br /&gt;BSWAP&lt;br /&gt;XADD&lt;br /&gt;CMPXCHG&lt;br /&gt;CMPXCHG8B&lt;br /&gt;PUSH&lt;br /&gt;POP&lt;br /&gt;PUSHA/PUSHAD&lt;br /&gt;POPA/POPAD&lt;br /&gt;IN&lt;br /&gt;OUT&lt;br /&gt;CWD/CDQ&lt;br /&gt;CBW/CWDE&lt;br /&gt;MOVSX&lt;br /&gt;MOVZX&lt;/DIV&gt;
&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;/td&gt;
				&lt;/tr&gt;&lt;/table&gt;</description>
			<category>tip &amp; effciency</category>
			<author>(Couple)</author>
			<guid>http://couple.haruschool.com/tc/226</guid>
			<comments>http://couple.haruschool.com/tc/226#entry226comment</comments>
			<pubDate>Wed, 06 Feb 2008 17:01:06 +0900</pubDate>
		</item>
		<item>
			<title>[C] 프로그래머가 알아야 할 것들 - 어셈블리</title>
			<link>http://couple.haruschool.com/tc/225</link>
			<description>&lt;table width=&quot;100%&quot;&gt;
				&lt;tr&gt;
					&lt;td&gt;&amp;nbsp;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;SPAN lang=EN-US style=&quot;COLOR: green; FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;(1) &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;어셈블리 언어&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;br /&gt;C&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;언어는 다른 언어들 보다 어셈블리에 근접한 언어입니다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;인라인 어셈블리가 가능한 데다가&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;메모리를 직접 다루는 것이 가능하며&lt;SPAN lang=EN-US&gt;, C&lt;/SPAN&gt;언어는 어셈블리어와&lt;SPAN lang=EN-US&gt; 1:1&lt;/SPAN&gt;대응까진 아니지만 직접 대응 되는 언어이기 때문입니다&lt;SPAN lang=EN-US&gt;.&lt;br /&gt;&lt;br /&gt;C&lt;/SPAN&gt;언어로 작성한 코드는 컴파일러를 통해서 어셈블리어와 대응되는 오브젝트 파일로 반드시 변환이 되어야 해당 코드가 실행 될 수 있습니다&lt;SPAN lang=EN-US&gt;.&lt;?XML:NAMESPACE PREFIX = O /&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;어셈블리 언어는 그 코드가 어떤 일을 할지를 추상적이 아니라&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;직접적으로 보여줍니다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;논리상의 오류나&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;수행 속도&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;수행 과정에 대해 명확히 해준다는 점에서 직관적인 언어입니다&lt;SPAN lang=EN-US&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/SPAN&gt;어셈블리 언어를 사용하면 메모리에 대한 이해도도 높아집니다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;우리가 포인터에 대해 어려워하는 이유도 메모리에 대해 명확히 파악하지 못하고&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;메모리를 다루기 때문입니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;C&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;프로그래머라면 어셈블리 언어를 알고 있는 것과 아닌 것과의 차이가 크기 때문에&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;어셈블리 언어에 대해 알아 두는 것이 좋다고 이야기 하는 것입니다&lt;SPAN lang=EN-US&gt;.&lt;br /&gt;&lt;br /&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;(2) Debug.exe&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;를 이용한 어셈블리 맛보기 &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Debug.exe&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;는 파일 이름 그대로&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;디버깅을 위한 목적으로 만들어진 프로그램이지만&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;간단한 수준의 어셈블리 프로그래밍도 가능한 프로그램입니다&lt;SPAN lang=EN-US&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/SPAN&gt;다음 표는&lt;SPAN lang=EN-US&gt; Debug.exe&lt;/SPAN&gt;의 기능들 중 자주 사용되는 기능을 요약한 표 입니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-yfti-tbllook: 480; mso-table-layout-alt: fixed&quot; cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #00ccff; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt&quot; vAlign=top width=139&gt;
&lt;P class=MsoNormal&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;명령어&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #00ccff; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 72pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt&quot; vAlign=top width=96&gt;
&lt;P class=MsoNormal&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;뜻&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #00ccff; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 258.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt&quot; vAlign=top width=345&gt;
&lt;P class=MsoNormal&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;기능&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 1&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=139&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;A[&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;주소&lt;SPAN lang=EN-US&gt;]&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 72pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=96&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Assemble&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 258.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=345&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;80x86 &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;명령을 받아 어셈블&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 2&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=139&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;D[&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;범위&lt;SPAN lang=EN-US&gt;]&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 72pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=96&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Dump&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 258.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=345&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;메모리에 수록되어 있는 자료를 표시&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 3&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=139&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;E&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;주소&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 72pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=96&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Enter&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 258.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=345&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;메모리에 자료를수록&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 4&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=139&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;F&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;범위자료&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 72pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=96&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Fill&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 258.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=345&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;메모리에 자료를수록&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 5&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=139&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;G[=&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;주소&lt;SPAN lang=EN-US&gt;1][&lt;/SPAN&gt;주소&lt;SPAN lang=EN-US&gt;2]&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 72pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=96&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Go&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 258.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=345&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;프로그램을 실행&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 6&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=139&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Q&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 72pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=96&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Quit&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 258.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=345&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Debug.exe&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;를 종료&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 7&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=139&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;R[&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;레지스터명&lt;SPAN lang=EN-US&gt;]&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 72pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=96&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Register&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 258.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=345&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;레지스터의 값을 표시&lt;SPAN lang=EN-US&gt;/&lt;/SPAN&gt;변경&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 8; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 104.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=139&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;U[&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;범위&lt;SPAN lang=EN-US&gt;]&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 72pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=96&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;Unassemble&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 258.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=345&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;기계어 코드를 역 어셈블&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;디버그 실행은 간단합니다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;도스 프롬프트상에서&lt;SPAN lang=EN-US&gt;, &lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BACKGROUND: #f3f3f3; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 435.1pt; PADDING-TOP: 0cm&quot; vAlign=top width=580&gt;
&lt;P class=MsoNormal style=&quot;WORD-BREAK: keep-all; LINE-HEIGHT: 10.55pt; TEXT-AUTOSPACE: ideograph-numeric; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan&quot; align=left&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;debug&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;라고 입력하면&lt;SPAN lang=EN-US&gt;, debug.exe &lt;/SPAN&gt;가 실행됩니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BACKGROUND: #f3f3f3; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 435.1pt; PADDING-TOP: 0cm&quot; vAlign=top width=580&gt;
&lt;P class=MsoNormal style=&quot;WORD-BREAK: keep-all; LINE-HEIGHT: 10.55pt; TEXT-AUTOSPACE: ideograph-numeric; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan&quot; align=left&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;debug &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;파일명&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;이렇게 디버그 실행 시 파일도 메모리에 올려놓을 수가 있습니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;실행에 성공하면 &lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BACKGROUND: #f3f3f3; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 435.1pt; PADDING-TOP: 0cm&quot; vAlign=top width=580&gt;
&lt;P class=MsoNormal style=&quot;WORD-BREAK: keep-all; LINE-HEIGHT: 10.55pt; TEXT-AUTOSPACE: ideograph-numeric; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan&quot; align=left&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;-&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;위와 같은 디버그 프롬프트가 표시되기 시작하면 디버그가 정상적으로 실행 된 것입니다&lt;SPAN lang=EN-US&gt;.&lt;BR style=&quot;mso-special-character: line-break&quot;&gt;&lt;BR style=&quot;mso-special-character: line-break&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;이제부터는 디버그로 어셈블리 코드를 작성 해볼 건데&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;처음 시작은 화면에 대문자&lt;SPAN lang=EN-US&gt; V&lt;/SPAN&gt;를 출력하는 코드로 시작 해보겠습니다&lt;SPAN lang=EN-US&gt;.&lt;br /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;먼저&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;오프셋 주소&lt;SPAN lang=EN-US&gt; 100&lt;/SPAN&gt;부터 어셈블리 코드를 입력합니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BACKGROUND: #f3f3f3; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 435.1pt; PADDING-TOP: 0cm&quot; vAlign=top width=580&gt;
&lt;P class=MsoNormal style=&quot;WORD-BREAK: keep-all; LINE-HEIGHT: 10.55pt; TEXT-AUTOSPACE: ideograph-numeric; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan&quot; align=left&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;A 100&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;DL &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;레지스터에&lt;SPAN lang=EN-US&gt; 56(&lt;/SPAN&gt;대문자&lt;SPAN lang=EN-US&gt; V. 16&lt;/SPAN&gt;진수임을 의미하는&lt;SPAN lang=EN-US&gt; H&lt;/SPAN&gt;는&lt;SPAN lang=EN-US&gt; Debug&lt;/SPAN&gt;에선 표기 하지 않아야 함&lt;SPAN lang=EN-US&gt;)&lt;/SPAN&gt;를 집어 넣습니다&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BACKGROUND: #f3f3f3; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 435.1pt; PADDING-TOP: 0cm&quot; vAlign=top width=580&gt;
&lt;P class=MsoNormal style=&quot;WORD-BREAK: keep-all; LINE-HEIGHT: 10.55pt; TEXT-AUTOSPACE: ideograph-numeric; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan&quot; align=left&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;MOV DL,56&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;MOV&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;는 이동&lt;SPAN lang=EN-US&gt;(Move)&lt;/SPAN&gt;명령으로써&lt;SPAN lang=EN-US&gt;, MOV A, B&lt;/SPAN&gt;라면&lt;SPAN lang=EN-US&gt;, B&lt;/SPAN&gt;에 있는 값을&lt;SPAN lang=EN-US&gt;, A&lt;/SPAN&gt;로 복사하라는 뜻이 됩니다&lt;SPAN lang=EN-US&gt;.&lt;BR style=&quot;mso-special-character: line-break&quot;&gt;&lt;BR style=&quot;mso-special-character: line-break&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;화면에 한 문자를 출력하라는 명령&lt;SPAN lang=EN-US&gt;(&lt;/SPAN&gt;숫자&lt;SPAN lang=EN-US&gt; 2)&lt;/SPAN&gt;을&lt;SPAN lang=EN-US&gt;, AH&lt;/SPAN&gt;레지스터에 넣어둡시다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BACKGROUND: #f3f3f3; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 435.1pt; PADDING-TOP: 0cm&quot; vAlign=top width=580&gt;
&lt;P class=MsoNormal style=&quot;WORD-BREAK: keep-all; LINE-HEIGHT: 10.55pt; TEXT-AUTOSPACE: ideograph-numeric; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan&quot; align=left&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;MOV AH,2&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;다음으로&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;도스 시스템 루틴 실행 시킵니다&lt;SPAN lang=EN-US&gt;. &lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BACKGROUND: #f3f3f3; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 435.1pt; PADDING-TOP: 0cm&quot; vAlign=top width=580&gt;
&lt;P class=MsoNormal style=&quot;WORD-BREAK: keep-all; LINE-HEIGHT: 10.55pt; TEXT-AUTOSPACE: ideograph-numeric; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan&quot; align=left&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;INT 21&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;INT &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;라는 인터럽트&lt;SPAN lang=EN-US&gt;(&lt;/SPAN&gt;가로채기&lt;SPAN lang=EN-US&gt;)&lt;/SPAN&gt;로써&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;뒤에 오는 번호의 명령에 해당하는 기능을 수행하러 동작하고 오라는 것을 의미합니다&lt;SPAN lang=EN-US&gt;.&lt;BR style=&quot;mso-special-character: line-break&quot;&gt;&lt;BR style=&quot;mso-special-character: line-break&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;실행 시킨 후에는 실행 종료 루틴을 실행합니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BACKGROUND: #f3f3f3; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 435.1pt; PADDING-TOP: 0cm&quot; vAlign=top width=580&gt;
&lt;P class=MsoNormal style=&quot;WORD-BREAK: keep-all; LINE-HEIGHT: 10.55pt; TEXT-AUTOSPACE: ideograph-numeric; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan&quot; align=left&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;INT 20&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;이 코드를 다 입력한 후&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;엔터를 치면&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;다시 디버그 프롬프트로 돌아 오면&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;실행 명령인&lt;SPAN lang=EN-US&gt; G&lt;/SPAN&gt;를 입력해주면 입력한 어셈블리 코드가 실행됩니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BACKGROUND: #f3f3f3; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 435.1pt; PADDING-TOP: 0cm&quot; vAlign=top width=580&gt;
&lt;P class=MsoNormal style=&quot;WORD-BREAK: keep-all; LINE-HEIGHT: 10.55pt; TEXT-AUTOSPACE: ideograph-numeric; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan&quot; align=left&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;G&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;실행된 결과는 다음과 같습니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BACKGROUND: #f3f3f3; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480&quot; cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes&quot;&gt;
&lt;TD style=&quot;PADDING-RIGHT: 5.4pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 435.1pt; PADDING-TOP: 0cm&quot; vAlign=top width=580&gt;
&lt;P class=MsoNormal style=&quot;WORD-BREAK: keep-all; LINE-HEIGHT: 10.55pt; TEXT-AUTOSPACE: ideograph-numeric; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan&quot; align=left&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;V&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 굴림; mso-font-kerning: 0pt&quot;&gt;프로그램이 정상적으로 종료 되었습니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;생각보다 간단하죠&lt;SPAN lang=EN-US&gt;? &lt;/SPAN&gt;어셈블리 언어가 잘 사용되지 않는 이유는 하드웨어에 종속적이며&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;같은 기능을 구현할 때 작성해야 하는 코드 수가 비약적으로 많고 이해하기 어렵다는 이유에서였지&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;어셈블리 언어 자체는 직관적이라 이해하기 수월하다고 할 수 있습니다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;다음으로 어셈블리 언어 더 잘 이해하기 위해 꼭 알아두어야 할 레지스터에 대해서 알아보죠&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN lang=EN-US style=&quot;COLOR: green; FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;(3) &lt;/SPAN&gt;&lt;/B&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;COLOR: green; FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;레지스터&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;레지스터란&lt;SPAN lang=EN-US&gt;, CPU&lt;/SPAN&gt;의 내부의 기억 장소로&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;자료를 바이트 단위 또는 워드 단위로 수락합니다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;어찌 보면&lt;SPAN lang=EN-US&gt;, RAM&lt;/SPAN&gt;과 비슷하다고도 볼 수 있는데&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;레지스터는 메모리와는 다른 몇 가지 기능들을 갖고 있습니다&lt;SPAN lang=EN-US&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/SPAN&gt;가장 먼저 알아볼 레지스터로는 범용 레지스터가 있는데요&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;말 그대로 범용적으로 사용되는 레지스터들 입니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;TEXT-ALIGN: center&quot; align=center&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;범용 레지스터&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-yfti-tbllook: 480; mso-table-layout-alt: fixed&quot; cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #00ccff; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt&quot; vAlign=top width=55&gt;
&lt;P class=MsoNormal&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;32Bit&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #00ccff; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;16Bit&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #00ccff; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;상위&lt;SPAN lang=EN-US&gt;8Bit&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #00ccff; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;하위&lt;SPAN lang=EN-US&gt;8Bit&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #00ccff; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 288pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt&quot; vAlign=top width=384&gt;
&lt;P class=MsoNormal&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;기능&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 1&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=55&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;EAX&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;AX&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;AH&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;?XML:NAMESPACE PREFIX = ST1 /&gt;&lt;ST1:STATE w:st=&quot;on&quot;&gt;&lt;ST1:PLACE w:st=&quot;on&quot;&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;AL&lt;/SPAN&gt;&lt;/ST1:PLACE&gt;&lt;/ST1:STATE&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 288pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=384&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;누산기&lt;SPAN lang=EN-US&gt;(Accumulator, &lt;/SPAN&gt;중간 결과를 저장해 놓음&lt;SPAN lang=EN-US&gt;)&lt;/SPAN&gt;레지스터라 불리며&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;곱셈이나 나눗셈 연산에 중요하게 사용&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 2&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=55&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;EBX&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;BX&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;BH&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;BL&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 288pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=384&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;베이스 레지스터라 불리며 메모리 주소 지정시에 사용됩니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 3&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=55&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;ECX&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;CX&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;CH&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;CL&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 288pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=384&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;계수기&lt;SPAN lang=EN-US&gt;(Counter)&lt;/SPAN&gt;레지스터라 불리며&lt;SPAN lang=EN-US&gt;, Loop&lt;/SPAN&gt;등의 반복 명령에 사용됩니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 4&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=55&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;EDX&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;DX&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;DH&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;DL&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 288pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=384&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;데이터&lt;SPAN lang=EN-US&gt;(Data)&lt;/SPAN&gt;레지스터라 불리며 곱셈&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;나눗셈에서&lt;SPAN lang=EN-US&gt; EAX&lt;/SPAN&gt;와 함께 쓰이며 부호 확장 명령 등에 사용됩니다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 5&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=55&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;ESI&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;SI&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&amp;nbsp;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&amp;nbsp;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 288pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=384&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;다량의 메모리를 옮기거나 비교할 때 그 소스&lt;SPAN lang=EN-US&gt;(Source)&lt;/SPAN&gt;의 주소를 가진다&lt;SPAN lang=EN-US&gt;&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 6&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=55&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;EDI&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;DI&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&amp;nbsp;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&lt;O:P&gt;&amp;nbsp;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 288pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=384&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;다량의 메모리를 옮기거나 비교할 때 그 목적지의 주소를 가리킨다&lt;SPAN lang=EN-US&gt;.&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;mso-yfti-irow: 7&quot;&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=55&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;ESP&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;SP&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt&quot; vAlign=top width=48&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt&quot;&gt;&l