현재 위치 - 인적 자원 플랫폼망 - 미니프로그램 자료 - DOS에서 어셈블리 언어로 볼륨을 조절하고(즉, 위아래 키를 눌러 소리를 점점 더 크게) 음소거하는 방법은 무엇인가요?
DOS에서 어셈블리 언어로 볼륨을 조절하고(즉, 위아래 키를 눌러 소리를 점점 더 크게) 음소거하는 방법은 무엇인가요?
설명:

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; 컴파일의 끝입니다