<div>아래 코드들은 최대값을 도출해내는 코드입니다.</div> <div><br></div> <div>#include <reg51.h></div> <div> </div> <div>void main(void){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>unsigned char i, max; //i: for문용 && max: 최대값 데이터 저장</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>unsigned char R1 = 0x3F; //R1은 R0의 크기(R1 == 비교할 횟수라고 봐도 무방)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>unsigned char R0[R1] = [R1만큼의 데이터를 넣었다고 가정]</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>unsigned char R2; //R0[R1]의 크기를 저장</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>unsigned char* R3; //R0 배열의 마지막 주소값 저장</div> <div> </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>max = R0[0]; //최대값에 R0배열의 첫번쨰 값 대입</div> <div> </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(i=0; i<R1; i++){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(max < R0[i]) max = R0[i];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span><b>R2 = R1 * sizeof(R0); //sizeof를 써도 되는지?</b></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>R3 = &R0[R1-1];</div> <div>}</div> <div><br></div> <div>위 C언어에서 궁금한점은 8051 C코딩할때도 sizeof를 써도 되는지가 의문입니다.</div> <div><br></div> <div>그리고 아래는 위 C코드를 어셈블로 대략적으로 바꾼것입니다</div> <div>=============================================</div> <div> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">ORG 0000H ; </span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">프로그램 시작</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> JMP START</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">;</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">START: </span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> MOV R0,#30H ; </span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">데이터가 들어있는 최초의 주소를 </span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">R0</span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">에 저장</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> MOV R1,#3FH ; </span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">비교할 횟수 저장</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> <b>MOV R2,#00H</b> ; <b>공간값계산을위해 0으로 초기화 --> 이 부분을 0으로 초기화하는데 #00H가 맞는지?</b></span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"><b> </b> MOV MAX,@R0 ;MAX에 최초의 데이터를 저장</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> MOV R4, MAX ; R4=MAX --> R4에 MAX값 저장</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">LOOP: </span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> <b>MOV MAX, R4 ; 이부분은 도대체 왜 필요한것입니까? 버려도 무관한것 같은데...</b></span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> INC R0 ;주소값 1 증가</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> INC R2 ;공간값 계산을 위해 루프를 돌때마다 ++시킴</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> <b>CLR C</b></span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> SUBB MAX,@R0 ; MAX</span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">와 </span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">R0</span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">가 지시하는 번지의 내용을 비교</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> JNC GREAT ; MAX</span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">가 더 크면 </span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">GREAT</span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">로 점프</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> MOV MAX,@R0 ; </span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">작으면 </span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">R0</span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">가 지시하는 번지의 내용을 </span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">MAX</span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">에 저장</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> MOV R4, MAX ;</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">GREAT: DJNZ R1,LOOP</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> MOV 70H, MAX</span></p> <p style="margin:3.6pt 0in 0pt;padding:0px;line-height:normal;font-family:Gulim;font-size:13.3333px;text-indent:0in;text-align:justify;vertical-align:baseline;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> <b> MOV R3, @R1-1 ;이건 직접 작성해본건데.. R3에 마지막주소값을 넣는 것입니다. 그 주소의 데이터가아니라 그 주소숫자자체!!</b></span></p> <p style="margin:0px;padding:0px;line-height:20px;font-family:Gulim;font-size:13.3333px;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"> END ; </span><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">프로그램 끝</span></p> <p style="margin:0px;padding:0px;line-height:20px;font-family:Gulim;font-size:13.3333px;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"><br></span></p> <p style="margin:0px;padding:0px;line-height:20px;font-family:Gulim;font-size:13.3333px;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;">====================================================</span></p> <p style="margin:0px;padding:0px;line-height:20px;font-family:Gulim;font-size:13.3333px;"><span style="font-size:10pt;font-family:gulim;vertical-align:baseline;"><br></span></p> <p style="margin:0px;padding:0px;line-height:20px;"><font face="gulim"><span style="font-size:13.3333px;">그냥 C언어, 어셈블이라면 이해가 쉽겠는데</span></font></p> <p style="margin:0px;padding:0px;line-height:20px;"><font face="gulim"><span style="font-size:13.3333px;">8051로 하려니 조금씩 달라져버려서 너무 혼란스럽니다..</span></font></p> <p style="margin:0px;padding:0px;line-height:20px;"><font face="gulim"><span style="font-size:13.3333px;">궁금한 점은 모두 굵은 글씨로 처리해봤어요..ㅠㅠ</span></font></p></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.