1, 이 프로그램은 커서 왼쪽, 커서 오른쪽, Esc의 세 가지 키만 인식합니다.
2. 커서 왼쪽 또는 커서 오른쪽을 누르면 해당 기능이 수행되고 Esc를 누르면 프로그램이 종료됩니다.
; 이 프로그램은 컴파일을 통해 올바르게 실행됩니다.
코드 세그먼트
가정 CS:코드, DS:코드
; -
; 함수:지정된 주소에 문자열을 표시(Str_Addr)
; 항목:
; Str_Addr= = 문자열 주소 (데이터 세그먼트에 필요)
; 사용법:출력
. 문자열 주소
; 사용법 예:출력 매크로 문자열 주소
lea dx, Str _Address
mov ah, 9
int 21h
EndM
;-
; 함수:커서 설정
; 사용법:커서 설정 Position
; Entry: Cursor_Row=행 좌표, Cursor_Column:열 좌표)
SetCursor가 이웃으로 전진
PushCX
PushBX
PushAxe
MOV DH, Cursor_Row
MOV DL, Cursor_Column
BX XOR BX
MOV ah, 2
INT 10H
Blaster
Pop-BX
Pop-CX
Soak to make soft
Cursor_Row DB 21
Cursor_Column Database 36
SetCursor end
;-
KBEsc equ 11BH
KBLeft equ 4BH
KBRight equ 4DH
String db ' & lt-& gt; $'
Beginning:push cs
인기 디지털 카메라
Popular. p>
push cs
pop es는 데이터 세그먼트, 추가 세그먼트 및 코드 세그먼트를 동일한 세그먼트로 만듭니다.
mov ah, 8; 커서 위치의 문자와 속성을 읽습니다.
int 10h
mov bh, ah; 문자 속성 값을 저장
Disp_Str: SetCursor를 호출하여 커서 위치를 설정
출력 문자열; 문자열을 표시
Read_Key: xor ah, ah
int 16h; 키를 수신
< p>cmp ax, KBEscEsc?jz Exit_Procedure; 프로그램을 종료하고 OS로 돌아갑니다.
cmp ah, KB왼쪽에서 왼쪽 화살표?
jnz $+10; 아니, 돌아서서 오른쪽을 눌렀는지 확인합니다.
mov word ptr Inc_or_Dec, 0efeh 예, 전 열이 마이너스 1일 때.
jmp cursor_move
cmp ah, KB오른쪽 화살표?
jnz 읽기 _ 키 아니요, 다음 버튼 받기.
mov 단어 ptr Inc_or_Dec, 06feh 예, 현재 열에 1을 추가합니다.
Cursor_move:mov bl, ah; 키 포인트 방향을 저장합니다
push bx
xor Ltd
mov ah, 3; 현재 커서 위치와 창 오른쪽 아래 모서리의 좌표를 가져옵니다.
int 10h
pop bx
inc dl 열 번호 + 1
mov ch, 커서 _ 행 창의 왼쪽 상단 모서리에 있는 행 번호
mov cl, 커서 _ 콜 창의 왼쪽 상단 모서리에 있는 열 번호
. bl = = = KBLeft & amp& ampcl = = 0; 인 경우 왼쪽 버튼을 누르지만 이미 맨 왼쪽에 있어 움직이지 않습니다.
jmp 읽기 키
. endif
. if bl = = = KBRight & amp& ampdl = = 79 오른쪽 버튼을 누르고 있지만 맨 오른쪽으로 이동하여 움직이지 않는 경우.
jmp 읽기 키
. ENDIF
mov ah, 7; 창 표시가 아래로 스크롤됩니다.
mov al, 1; 한 줄 아래로 스크롤합니다.
int 10h
Inc_or_Dec: 이전 열 번호가 마이너스 1 또는 플러스 1일 때 inc cursor_ Col.
jmp display_string
Exit_Proc: mov ah, 4ch 프로그램 끝
int 21h
코드 끝
End of Begin; 컴파일의 끝입니다