String 8086 ASM-输出字符串到屏幕
我试图从键盘获取输入,然后将其输出到屏幕 我的代码String 8086 ASM-输出字符串到屏幕,string,assembly,output,x86-16,String,Assembly,Output,X86 16,我试图从键盘获取输入,然后将其输出到屏幕 我的代码 BITS 16 ;Set code generation to 16 bit mode ORG 0x0100; SECTION .text; MAIN: mov SI, MyArray call GetString call Putln call PutString jmp Exit; GetString: call Getch ; get t
BITS 16 ;Set code generation to 16 bit mode
ORG 0x0100;
SECTION .text;
MAIN:
mov SI, MyArray
call GetString
call Putln
call PutString
jmp Exit;
GetString:
call Getch ; get the character stored in DL
cmp dl, 0dh ; if Enter is pressed Exit the subroutine
je Return
; call Putch ;*commeted out to see if putsring works* ; output the character on screen
stosb ; store the character in al to [di] and increment di by 1
jmp GetString ; loop back to GetString
Return:
mov al, 0 ; terminate array with a 0
stosb
ret
PutString:
cld
lodsb ; load the character in [si] to al and increment si by 1
cmp al, 0
jz Return2
mov dl, al
call Putch
jmp PutString ; loop back to PutString
Return2:
Ret
Getch:
push di
mov ah, 7 ; keyboard input subprogram without echo
int 21h ; read the character into al
mov dl, al
pop di
RET ; return
Putch:
push di
mov ah, 2h ; display subprogram
INT 21H ;read the characters from al
pop di
RET ; Return
Putln: ;new line
mov ah, 2
mov dl, 0DH ;Carriage return
int 21h
mov dl, 0AH ;Line feed
int 21H
RET ; return
Exit:
MOV AH,04Ch ; Select exit function
MOV AL,00 ; Return 0
INT 21h ; Call the interrupt to exit
SECTION .bss
MyArray resb 256
然而,我不能让PutString正常工作。无论在键盘上键入什么,它都打印相同的ASCII字符
任何帮助都将不胜感激 我没有看到你在任何地方初始化
DI
。它可能应该像SI
一样设置为指向MyArray
,否则您的STOSB
将只写入某个随机位置。我看不到您在任何地方初始化DI
。它可能应该像SI
一样设置为指向MyArray
,否则您的STOSB
将只写入某个随机位置。这些是您需要进行的唯一更改:
...
;;;; mov SI, MyArray
mov DI, MyArray ;;;; stosb uses DI
call GetString
call Putln
mov SI, MyArray ;;;; lodsb uses SI
...
以下是您需要进行的唯一更改:
...
;;;; mov SI, MyArray
mov DI, MyArray ;;;; stosb uses DI
call GetString
call Putln
mov SI, MyArray ;;;; lodsb uses SI
...
哈哈,谢谢迈克尔!我被困了几个小时,我想它只需要一双新的眼睛就可以了!它现在工作得很好:)谢谢!哈哈,谢谢迈克尔!我被困了几个小时,我想它只需要一双新的眼睛就可以了!它现在工作得很好:)谢谢!