[어셈블리어] 문제를 이해를 못해서요 ㅜㅜ...
글쓴이: kknd345 / 작성시간: 목, 2005/04/14 - 5:32오후
최근에 어셈블리어 배우고 있는데 모르는게 많어서요 ㅜㅜ..
문제에 이 문장이 있는데요
locates the cursor near the middle of the screen.
개행 문자는 0dh,0ah 이런식으로 하면 된다고 들었는데요
(0dh 가 줄 처음인가요? 개행인가요? )
화면 가운데로 바로 가는 명령어가 있나요?
그리고
Tempstr "abcdefg",0 mov edx, OFFSET Tempstr
여기서 오프셋은 왜 써주는 건가요?
그냥 바로 mov eax, Tempstr 이렇게 해주면 안 되나요?
마지막은 문제인데요... 감이 잘 안 와서요.Write a program that displays a single character at 100 random screen locations. Optional : use a randomized delay between characters, between 10 and 300 milliseconds.
인데요.
문제를 어떻게 해결 해야 할지 모르겠습니다. 대충 어떻게 하면 되겠다고 설명만 해주셔도 고맙겠습니다 ^^
Forums:
0x0D : CR(캐리지 리턴), 0x0A: NL(뉴라인)OFFS
0x0D : CR(캐리지 리턴), 0x0A: NL(뉴라인)
OFFSET은 현재 세그먼트에서의 오프셋값만 얻어 올겁니다. 어셈블리어가 저렇게
생겨먹었나 그래요. 하이레벨 언어는 변수명이 주소개념이지만. 좀더 하위 레벨이라서 그럴겁니다. 세그먼트가 다르면 세그먼트만 얻어오는 것도 있을 겁니다.
일단 매크로로 또는 서브루틴으로 화면의 임의의 위치에 문자 하나 찍는걸 짜고
이걸 호출하는 루프를 만드세요. 루프돌때 랜덤으로 딜레이(어셈블러로 sleep 코드를 만들 수 있나.. 기억이 안나네요. 슬립 인터럽터가 있던가.. 아님 알람 인터럽터)
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
1. 0A가 개행(Line feed)0D가 줄처음(carraige r
1. 0A가 개행(Line feed)
0D가 줄처음(carraige return) 입니다.
2. 커서를 화면의 특정 위치로 옮기는 건,
Intel x86의 경우 INT 10H (02H)로 가능합니다.
3. OFFSET operator를 안 쓰려면 LEA로 하시면 됩니다.
4. 그 문제에서 locate하는 것은 위에서 설명한대로 INT 10H (02H)
로 해결하시면 되고 time delay는 제가 기억하기로 BIOS 영역에서
CPU tick을 저장하는 부분을 읽어서 그 차이로 계산했던 것 같네요.
그리고 이 모든게 책을 찾아보시면 됩니다.
제가 가지고 있는 책은 IBM PC assembly language and programming, 5th ed, Peter Abel 이네요.
질문하시기 전에 intel manual에서라도 한번 찾아보시길 권합니다.
영어가 어려우시다면...그냥 질문하세요 ^^
댓글 달기