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 |