C:\>debug

 

프로그램 설명 : BL에 저장된 16진수값을 2진수값으로 바꾸어 화면에 출력하고 숫자 끝에 2진수임을 알려주는 영문b를 같이 출력하는 프로그램을 작성하시오.

 

 

0100     mov      ah,02    ;AH 02(HEX)값이 들어있으면 int 21명령으로 DL값에 해당하는 ASCII문자열을 출력합니다.

0102     mov      bl,aa     ;BL AA(HEX)값을 저장합니다.

0104     mov      cx,0008  ;HEX값을 BIN으로 출력하는데 필요한 루프의 동작 수

0107     mov      dl,00     ;DL 00(HEX)값 저장

0109     rcl        bl,1       ;BL의 비트 값 왼쪽으로 1만큼 회전

010b     adc       dl,30     ;DL=DL+30+캐리값

010e     int      21        ;DL값에 해당하는 ASCII 문자열 출력

0110     loop      0107     ;0107번지부터 루프

0112     mov      dl,62     ;여기서 실수!!!!!!!!!!!!!했었습니다. 밑에 설명...

0114     int        21        ;영문b출력

0116     int        20        ;프로그램 종료

 

 

마지막에 b의 아스키 코드 값을 찾으러 인터넷 헤매다가 '아 이거 일일이 보고 대입하기 귀찮아서 C

 

#include <stdio.h>

#include <stdlib.h>

 

void main()

{

           char a;

 

           scanf("%c",&a);

 

           printf("%d",a); //char로 읽어서 dec로 출력하면 되는데 그걸 몰라서 함수 찾느라 헤맸네요 ㅜㅜ

 

}

 

 

프로그램 실행해보니, b 98이 나옵니다.

 

그래서 dl 98을 대입하고 프로그램을 돌려보니

 

10101010여기까지는 잘 나오는데 b가 안나오고 왠 외계어가 한세트....

 

.. 근대 컴퓨터가 다루는 숫자는 16진수네요.





진리의 계산기님께 여쭈어보니 98(10)은 16진수로 62(10)네요.



성공~~

피씨통신 시절에 씌어진(1994년~1995년경)것으로 추정되는 강의자료를 보고 공부중입니다.

저자. 김병희님

'노트정리 > 어셈블리' 카테고리의 다른 글

어셈블리 16비트 실습 환경  (0) 2010.05.15
XCHG : exchange data  (0) 2010.05.06
PIC 마이컴 명령어 셋  (0) 2010.03.01
MPASM의 사용법  (0) 2010.02.24
MOV : 8086과 PIC의 차이  (0) 2010.02.24
어셈블리 구조체  (0) 2010.02.23
emu8086 어셈블리 에물레이터  (0) 2010.02.23
문자열 출력 프로그램 복습  (0) 2010.02.21
HEX to BIN  (0) 2010.02.14
Posted by 공돌이pooh

댓글을 달아 주세요