컴퓨터 지식 네트워크 - 컴퓨터 교육 - 키보드에서 0에서 9999 사이의 숫자를 입력하고 어셈블리 언어 프로그래밍을 사용하여 10진수를 2진수로 변환하고 변환 결과를 2진수 형식으로 표시합니다.

키보드에서 0에서 9999 사이의 숫자를 입력하고 어셈블리 언어 프로그래밍을 사용하여 10진수를 2진수로 변환하고 변환 결과를 2진수 형식으로 표시합니다.

데이터 세그먼트

msg0 db '0~9999 사이의 숫자를 입력하세요:$'

msg1 db '결과는:$'

result dw 0 ;변환된 이진수를 저장

disp db 16 dup(20h),'$' ;최대 데이터가 9999이므로 최대 16개의 이진수를 표현할 수 있다

p>

데이터 끝

코드 세그먼트

는 ds:data,cs:code라고 가정합니다.

시작:

mov ax, data

mov ds,ax

lea dx,msg0 ;입력 정보에 대한 프롬프트 표시

mov ah,09h

int 21h

p>

lea si,result

call input; 입력 결과를 변환하여 결과 단위로 보냅니다.

lea dx,msg1;

mov ah,09h

int 21h

crlf 호출 ; 캐리지 리턴 및 라인 피드

mov bx,result

lea si,disp

호출 출력 ;Result의 숫자를 표시할 ASCII 코드로 변환

mov ah,09h

lea dx, disp ;결과를 디스플레이에 출력

int 21h

mov ax,4c00h

int 21h

input:

mov ah,01h; 키보드 입력 및 echo

int 21h

cmp al,0dh; 입력이 Enter가 아니면 입력을 계속하고, 그렇지 않으면 입력을 종료합니다. >

jz endret

mov ah,0

sub al,30h ; 여기에는 오류 판단 기능이 없습니다. 입력은 0부터 9까지의 숫자라고 가정합니다. , 30H를 직접 빼기

push ax ;Protect AX, AH는 이때 0으로 지워져야 합니다

mov ax,[si] ;변환 알고리즘: Result=Result*1 AX

mov bx,10

mul bx

mov [si],ax

팝 액스

추가 [si],ax

jmp 입력

endret:

ret

출력:

mov cx ,16

s0:

mov dl,30h

rol bx,1

adc dl,0

mov [si],dl

inc si

루프 s0

ret

crlf:

mov 아,02h

mov dl,0dh

int 21h

mov dl,0ah

int 21h

ret

코드 끝

끝 시작

上篇: Black Super SWAT Team 2에서 사악한 여왕 역을 맡은 사람은 누구인가요? 下篇: 롱강 영상 출입 통제로 집을 추가하는 방법
관련 내용