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
Posted by 공돌이pooh
,