통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
Visual C++ 포럼마을 입니다.
  마을등급 Visual C++   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 나성훈 주민 34007 since 2006-12-29
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
마을 게시판
등록된 마을 게시판이
없습니다.
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 질문&답변
 r.x.ax=0x1003; 요기서 0x1003이 멀 뜻하는거져?^^  | VC++ 일반 2003-04-12 오후 5:59:11
 kerriganhjh  kerriganhjh님께 메시지 보내기kerriganhjh님을 내 주소록에 추가합니다.kerriganhjh님의 개인게시판 가기 번호: 296603  / 읽음:1,694

 #include "filelist.h"

#include <iostream.h>

#include <dos.h>

#include <cursor.h>

 

void blink_remove()

{

union REGS r;

 

r.h.bh=0;

r.h.bl=0;

r.x.ax = 0x1003;

int86(0x10 ,&r, &r);

 }

위에는 엠(M)쉘 만드는 소스중 일부인데여.. 위에서여 해서하다보니까여 r.x.ax = 0x1003;부분에서 0x1003같은 것들이 많은데 어떨때 쓰는거져?

 

그리고 keybord.h란 헤더화일에는 #define F1 0x1003 처럼 키를 정의해놓았는데여 저 16진수는 알겠는데 어떻게 프로그램상에서 돌아가는

 

것인지 모르겠어여. 마음대로 F1키를 정의해도 되는건가여?, 아니면 정해진 규칙이 있나여?  각 키마다 고유번호가 있나여?

 

에거 궁금투성이네여..ㅡ.ㅜ 워낙 허접해서여 쉽게좀 가르쳐주세여.. 아참 그리고 유니온 으로 설정되 REGE 에 대해서도 설명좀 해주세여..

이 글에 답변 등록하기
 [답변]0x... 16진수... 2003-04-12 오후 6:12:42
 anecia  anecia님께 메시지 보내기anecia님을 내 주소록에 추가합니다.anecia님의 개인게시판 가기 번호: 296605  

 안녕하세요?

 

Visual C/C++에서 16비트 표현은 0x 로 합니다.

0xA024  는 16진수이죠.

 

이것은 표기상의 모양만 다를뿐 숫자의 크기 값은 같습니다.

10진수로 12랑 16진수로 0x0C랑 같습니다.

그럼 왜 16진수 표기를 자주 사용할까요?

이것은 컴퓨터의 메모리 구조 때문에 그렇습니다.

컴퓨터는 2진수로 동작하는데요. 즉 0, 1 밖에 모릅니다. 이건 많이 들어보셨을 거예요.

때문에 메모리 구조가 2의 배수가 됩니다.

2, 4, 8, 16, 32, 64... ...

그래서 컴퓨터를 만든 사람들이 메모리에서 최소의 기억단위를 8비트 즉, 1바이트로 정했습니다.

때문에 변수를 기억시키기 위해서는 1바이트 이상을 사용하구요.

255이하의 숫자는 1바이트로 기억할 수 있지요. 그 이상의 숫자는 2바이트 3바이트 4바이트 ...

를 사용해야 겠죠.

이런 구조이다 보니까 10진수 보단 16진수에 더 친숙하게 되었답니다.

왜냐면 16진수로 0xFF가 255 거든요.

0x00 ~ 0xFF ===> 1바이트로 표현하는 종류

0x0000 ~ 0xFFFF  ===> 2바이트로 표현하는 종류

16진수를 사요아면 딱딱 8비트(1바이트) 씩 단위가 맞게 떨어져서 사용하기가 좋죠.

 

만약 10진수로 한다면 -_-;;;

1바이트는 0 ~ 255

2바이트는 0 ~ 65535  

보니까 단위가 영 아니죠? ^_^

 

어쨋든 그래서 16진수 표현을 많이 사용합니다.

2진수로 변환하기도 쉽구요(물론 사람이 눈으로 봐서 할때 얘기)

0xF 가 1111 이거든요

0001 0000  ==> 0x10 이구요

눈으로 다 보이죠. ^_^

근데 10진수로

45를 2진수로 표현하라고 하면 잘 안됩니다. 정말 계산 해야 해요.

그런데 16진수로 하면

45가 16진수로 0x23 이거든요.

0x23은   2진수로 0010 0011 이렇게 됩니다.

그냥 눈으로 보인답니다. 계산 안하고... ^_^

0000 ~ 1111 이 0x0 ~ 0xF 거든요.

 

그리고 키보드 코드는 임의로 정하시면 안됩니다.

키보드 아시키 코드값이랑 스캔코드 값이 정해져

있답니다.

때문에 임의로 바꾸면 제대로 안되겠죠.

 

그럼 멋진 주말 되세요.

이 글에 답변 등록하기
         [답변]그럼여.. 2003-04-12 오후 8:28:07
 kerriganhjh  kerriganhjh님께 메시지 보내기kerriganhjh님을 내 주소록에 추가합니다.kerriganhjh님의 개인게시판 가기 번호: 296622  

답변 정말 잘봤습니다.^^* 고생하시네여.^^

 

한개더물어봐도 돼져?ㅋ 그럼 키보드에서 알트나 A나 등등 다 고유번호가 있나여? 그것은 어디가면 얻을수 있는지^^;

 

그리구여 지금 제가 비디오 설정에 대해서 하나도 모르는데여.. 도움 될만한 웹 페이지 없나여? 지금 프로젝트를 엠(M)을 만들려고하는데여

 

도스기반으로여.. 다를 소스를 보니까 디스플레이 구현에서  비디오설정을 하는데 16진수막 나오구 해서 하나도 모르겠네여...ㅡ.ㅜ

 

그럼 답변기다리겠습니다. 그럼 님두 즐거운 주말 되세여..^^ 나주에 또 뵈여^^:

이 글에 답변 등록하기
                 [답변]게임개발 사이트 2003-04-12 오후 10:07:37
 anecia  anecia님께 메시지 보내기anecia님을 내 주소록에 추가합니다.anecia님의 개인게시판 가기 번호: 296642  

안녕하세요?

 

요즘에는 대부분의 사람들이 도스기반를 사용하지 않기 때문에

도스기반 게임 개발 관련 정보를 찾기가 더 힘듭니다. ^_^;

하이텔에 게임제작동호회에 도스 시절때의 자료가 아직도

있을법 한데... 혹시 하이텔 사용하시면 거기도 참고 하세요.

 

http://www.gamedev.net/

http://www.gamasutra.com/

 

예전에는 도스기반 게임개발 사이트 많이 알고 있었는데

요즘 통 도스기반으로 작업을 안해서요. 다 까먹었군요. ^_^

 

키스캔코드는 DirectX SDK를 설치한 후 dinput.h 헤더파일을

보면 그 값이 있습니다. 다음은 거기서 복사한 내용입니다.

보통 겜 컨트롤 할 때는 아스키 코드가 아닌 스캔코드 값을

이용합니다. 스캔코드값은 키보드로부터 전달받는 코드로서

키 고유 값입니다.

 

그리고 도스기반으로 화면 제어를 하시려면 도스로 부팅해서

하셔야 합니다. 요즘같이 NT기반(2000, XP 등)에서는

완벽한 도스모드를 지원하지 않기 때문에 문제가 발생할 수 있거든요.

도스기반으로 화면 제어하는 것은 서점에서 옛날 책 도스기반으로

게임만드는 방법에 대한 책이나 인터넷에서 검색을 하시면 정보는

얻을 수 있습니다.

 

그럼 멋진 주말 되세요.

 

/****************************************************************************

 *

 *      DirectInput keyboard scan codes

 *

 ****************************************************************************/

#define DIK_ESCAPE          0x01

#define DIK_1               0x02

#define DIK_2               0x03

#define DIK_3               0x04

#define DIK_4               0x05

#define DIK_5               0x06

#define DIK_6               0x07

#define DIK_7               0x08

#define DIK_8               0x09

#define DIK_9               0x0A

#define DIK_0               0x0B

#define DIK_MINUS           0x0C    /* - on main keyboard */

#define DIK_EQUALS          0x0D

#define DIK_BACK            0x0E    /* backspace */

#define DIK_TAB             0x0F

#define DIK_Q               0x10

#define DIK_W               0x11

#define DIK_E               0x12

#define DIK_R               0x13

#define DIK_T               0x14

#define DIK_Y               0x15

#define DIK_U               0x16

#define DIK_I               0x17

#define DIK_O               0x18

#define DIK_P               0x19

#define DIK_LBRACKET        0x1A

#define DIK_RBRACKET        0x1B

#define DIK_RETURN          0x1C    /* Enter on main keyboard */

#define DIK_LCONTROL        0x1D

#define DIK_A               0x1E

#define DIK_S               0x1F

#define DIK_D               0x20

#define DIK_F               0x21

#define DIK_G               0x22

#define DIK_H               0x23

#define DIK_J               0x24

#define DIK_K               0x25

#define DIK_L               0x26

#define DIK_SEMICOLON       0x27

#define DIK_APOSTROPHE      0x28

#define DIK_GRAVE           0x29    /* accent grave */

#define DIK_LSHIFT          0x2A

#define DIK_BACKSLASH       0x2B

#define DIK_Z               0x2C

#define DIK_X               0x2D

#define DIK_C               0x2E

#define DIK_V               0x2F

#define DIK_B               0x30

#define DIK_N               0x31

#define DIK_M               0x32

#define DIK_COMMA           0x33

#define DIK_PERIOD          0x34    /* . on main keyboard */

#define DIK_SLASH           0x35    /* / on main keyboard */

#define DIK_RSHIFT          0x36

#define DIK_MULTIPLY        0x37    /* * on numeric keypad */

#define DIK_LMENU           0x38    /* left Alt */

#define DIK_SPACE           0x39

#define DIK_CAPITAL         0x3A

#define DIK_F1              0x3B

#define DIK_F2              0x3C

#define DIK_F3              0x3D

#define DIK_F4              0x3E

#define DIK_F5              0x3F

#define DIK_F6              0x40

#define DIK_F7              0x41

#define DIK_F8              0x42

#define DIK_F9              0x43

#define DIK_F10             0x44

#define DIK_NUMLOCK         0x45

#define DIK_SCROLL          0x46    /* Scroll Lock */

#define DIK_NUMPAD7         0x47

#define DIK_NUMPAD8         0x48

#define DIK_NUMPAD9         0x49

#define DIK_SUBTRACT        0x4A    /* - on numeric keypad */

#define DIK_NUMPAD4         0x4B

#define DIK_NUMPAD5         0x4C

#define DIK_NUMPAD6         0x4D

#define DIK_ADD             0x4E    /* + on numeric keypad */

#define DIK_NUMPAD1         0x4F

#define DIK_NUMPAD2         0x50

#define DIK_NUMPAD3         0x51

#define DIK_NUMPAD0         0x52

#define DIK_DECIMAL         0x53    /* . on numeric keypad */

#define DIK_OEM_102         0x56    /* <> or \| on RT 102-key keyboard (Non-U.S.) */

#define DIK_F11             0x57

#define DIK_F12             0x58

#define DIK_F13             0x64    /*                     (NEC PC98) */

#define DIK_F14             0x65    /*                     (NEC PC98) */

#define DIK_F15             0x66    /*                     (NEC PC98) */

#define DIK_KANA            0x70    /* (Japanese keyboard)            */

#define DIK_ABNT_C1         0x73    /* /? on Brazilian keyboard */

#define DIK_CONVERT         0x79    /* (Japanese keyboard)            */

#define DIK_NOCONVERT       0x7B    /* (Japanese keyboard)            */

#define DIK_YEN             0x7D    /* (Japanese keyboard)            */

#define DIK_ABNT_C2         0x7E    /* Numpad . on Brazilian keyboard */

#define DIK_NUMPADEQUALS    0x8D    /* = on numeric keypad (NEC PC98) */

#define DIK_PREVTRACK       0x90    /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */

#define DIK_AT              0x91    /*                     (NEC PC98) */

#define DIK_COLON           0x92    /*                     (NEC PC98) */

#define DIK_UNDERLINE       0x93    /*                     (NEC PC98) */

#define DIK_KANJI           0x94    /* (Japanese keyboard)            */

#define DIK_STOP            0x95    /*                     (NEC PC98) */

#define DIK_AX              0x96    /*                     (Japan AX) */

#define DIK_UNLABELED       0x97    /*                        (J3100) */

#define DIK_NEXTTRACK       0x99    /* Next Track */

#define DIK_NUMPADENTER     0x9C    /* Enter on numeric keypad */

#define DIK_RCONTROL        0x9D

#define DIK_MUTE            0xA0    /* Mute */

#define DIK_CALCULATOR      0xA1    /* Calculator */

#define DIK_PLAYPAUSE       0xA2    /* Play / Pause */

#define DIK_MEDIASTOP       0xA4    /* Media Stop */

#define DIK_VOLUMEDOWN      0xAE    /* Volume - */

#define DIK_VOLUMEUP        0xB0    /* Volume + */

#define DIK_WEBHOME         0xB2    /* Web home */

#define DIK_NUMPADCOMMA     0xB3    /* , on numeric keypad (NEC PC98) */

#define DIK_DIVIDE          0xB5    /* / on numeric keypad */

#define DIK_SYSRQ           0xB7

#define DIK_RMENU           0xB8    /* right Alt */

#define DIK_PAUSE           0xC5    /* Pause */

#define DIK_HOME            0xC7    /* Home on arrow keypad */

#define DIK_UP              0xC8    /* UpArrow on arrow keypad */

#define DIK_PRIOR           0xC9    /* PgUp on arrow keypad */

#define DIK_LEFT            0xCB    /* LeftArrow on arrow keypad */

#define DIK_RIGHT           0xCD    /* RightArrow on arrow keypad */

#define DIK_END             0xCF    /* End on arrow keypad */

#define DIK_DOWN            0xD0    /* DownArrow on arrow keypad */

#define DIK_NEXT            0xD1    /* PgDn on arrow keypad */

#define DIK_INSERT          0xD2    /* Insert on arrow keypad */

#define DIK_DELETE          0xD3    /* Delete on arrow keypad */

#define DIK_LWIN            0xDB    /* Left Windows key */

#define DIK_RWIN            0xDC    /* Right Windows key */

#define DIK_APPS            0xDD    /* AppMenu key */

#define DIK_POWER           0xDE    /* System Power */

#define DIK_SLEEP           0xDF    /* System Sleep */

#define DIK_WAKE            0xE3    /* System Wake */

#define DIK_WEBSEARCH       0xE5    /* Web Search */

#define DIK_WEBFAVORITES    0xE6    /* Web Favorites */

#define DIK_WEBREFRESH      0xE7    /* Web Refresh */

#define DIK_WEBSTOP         0xE8    /* Web Stop */

#define DIK_WEBFORWARD      0xE9    /* Web Forward */

#define DIK_WEBBACK         0xEA    /* Web Back */

#define DIK_MYCOMPUTER      0xEB    /* My Computer */

#define DIK_MAIL            0xEC    /* Mail */

#define DIK_MEDIASELECT     0xED    /* Media Select */

 

/*

 *  Alternate names for keys, to facilitate transition from DOS.

 */

#define DIK_BACKSPACE       DIK_BACK            /* backspace */

#define DIK_NUMPADSTAR      DIK_MULTIPLY        /* * on numeric keypad */

#define DIK_LALT            DIK_LMENU           /* left Alt */

#define DIK_CAPSLOCK        DIK_CAPITAL         /* CapsLock */

#define DIK_NUMPADMINUS     DIK_SUBTRACT        /* - on numeric keypad */

#define DIK_NUMPADPLUS      DIK_ADD             /* + on numeric keypad */

#define DIK_NUMPADPERIOD    DIK_DECIMAL         /* . on numeric keypad */

#define DIK_NUMPADSLASH     DIK_DIVIDE          /* / on numeric keypad */

#define DIK_RALT            DIK_RMENU           /* right Alt */

#define DIK_UPARROW         DIK_UP              /* UpArrow on arrow keypad */

#define DIK_PGUP            DIK_PRIOR           /* PgUp on arrow keypad */

#define DIK_LEFTARROW       DIK_LEFT            /* LeftArrow on arrow keypad */

#define DIK_RIGHTARROW      DIK_RIGHT           /* RightArrow on arrow keypad */

#define DIK_DOWNARROW       DIK_DOWN            /* DownArrow on arrow keypad */

#define DIK_PGDN            DIK_NEXT            /* PgDn on arrow keypad */

 

 

 

이 글에 답변 등록하기
                         [답변]아네 감사..근데 ...[한줄답변] 2003-04-12 오후 10:14:00
홍진현 번호: 367965  
아네 감사..근데 제가 가지고 있는책이랑 틀리네여..코드값들을 조사해보니까여 책마다 틀리네여....우찌된일인지ㅡ.ㅜ
이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.