화면 보호기처럼 텍스트 나 문자를 이동하려는 어셈블리 언어로 프로그램을 만들려고합니다. 즉, 처음에는 앞뒤로 이동해야합니다. 방향. 화면의 하한선에 도달하면 앞뒤로 움직이기 시작해야하며, 반대의 경우도 마찬가지입니다.어셈블리 언어로 텍스트 프로그램 이동
나는 나 자신을 시험해 보았고 동시에 캐릭터를 앞뒤로 움직일 수 있었다. 캐릭터가 화면의 하한선에 도달하면, 나는 그것이 앞으로 및 앞으로 방향으로 움직이기를 원하지만 나는 그것을하는 방법을 생각할 수 없다.
I가 제 1 루프의 각 반복의 마지막 EMU8086 어셈블러
.model small
.data
st1 db "O",13,10,'$'
.code
main proc
mov AX,@data
mov DS,AX
mov BL,0
label1:
mov AH,2H
mov BH,0 ;goto-XY
mov DH,BL
mov DL,BL
INT 10H
mov AH,9H
mov DX,offset st1 ;print
INT 21H
mov AH, 6H
mov AL, 0
mov BH, 7 ;clear screen
mov CX, 0
mov DL, 79
mov DH, 24
int 10H
ADD BL,1
cmp DH,23 ;conditional jump
jz label2
loop label1
label2:
; mov AH,2H
; mov BH,0 ;goto-XY
; mov DH,BL
; mov DL,BL
; INT 10H
mov AH,9H
mov DX,offset st1 ;print
INT 21H
mov AH, 6H
mov AL, 0
mov BH, 7 ;clear screen
mov CX, 0
mov DL, 79
mov DH, 24
int 10H
SUB BL,1
loop label2
mov AH,4CH
INT 21H
end main
사용하고 내 화면의 Y 축 하한이 23 인 경우 낮은 'DH'= 23이기 때문에, 난 검사하고 한계에 도달하면 'label2'로 점프해야하지만, 'cmp'문을 올바르게 사용하지 않아서 'label2'로 점프하지 않습니다. 누구든지이 문제를 해결할 수 있습니까?
내가 도움을 원하는 주요한 것은 'label1'을 (를) 체크인해야 'label2'로 점프해야합니다.
추신. 어셈블리 언어의 초보자 일뿐입니다. 따라서 솔루션을 제안한다면 간단하고 이해하기 쉽도록하십시오. 여기 제가 지금까지 시도한 바가 있습니다.
당신이 사용하는 어셈블리의 버전은 무엇? –
어셈블리 버전이 무슨 뜻인지 잘 모르겠습니다. 당신은 정교 할 수 있습니까? – Yousaf
아키텍처에 따라 여러 가지 버전의 어셈블리 언어가 있습니다. nasm에서 인기있는 어셈블러 중 하나. –