因此,我在汇编语言中是新的,我试图对4字符串的中心。但我不知道为什么不行。
这些是我在代码中使用的4个字符串。当我运行程序时,str1是唯一到中心的。剩下的在左边。
str1 db "ADRIAN PAUL", 0AH, 0DH, "$"
str2 db "BS Computer Science", 0AH, 0DH, "$"
str3 db "09462524725", 0AH, 0DH, "$"
str4 db "macatopaul@gmail.com", 0AH, 0DH, "$"下面是我使用的代码:
MOV AX, @DATA
MOV DS, AX
MOV AX, 0600H
MOV BH, 07H
MOV CX, 0000H ;CLEAR SCREEN
MOV DX, 184FH
INT 10H
MOV AX, 0600h
MOV BH, 07h
MOV CX, 0000h
MOV DX, 184Fh
INT 10h
MOV AH, 02h
MOV BH, 00h
MOV DH, 0Ch
MOV DL, 24h
INT 10h
MOV AH,09h
MOV DX, OFFSET str1
INT 21h
MOV CX,001Ah
MOV AH, 02h
INT 21h
MOV AH,09h
MOV DX, OFFSET str2
INT 21h
MOV CX,001Ah
MOV AH, 02h
INT 21h
MOV AH,09h
MOV DX, OFFSET str3
INT 21h
MOV CX,001Ah
MOV AH, 02h
INT 21h
MOV AH,09h
MOV DX, OFFSET str4
INT 21h
MOV CX,001Ah
MOV AH, 02h
INT 21h发布于 2021-12-10 00:53:08
MOV,001Ah MOV,02h
这些行调用DOS api函数02h,该函数可以显示DL寄存器中其ASCII代码的字符。您没有使用DL,因此结果将是意外的。
也许您试图使用BIOS api函数02h定位游标。鉴于您的任务描述,这将是有意义的。
在输出每个字符串之前,最好将光标放在正确的位置。不要在字符串中包含回车(13)和linefeed (10),因为它们不再有意义了。
str1 db "ADRIAN PAUL$"
str2 db "BS Computer Science$"
str3 db "09462524725$"
str4 db "macatopaul@gmail.com$"mov bh, 0 ; DisplayPage
mov dx, 0B23h ; At(35,11)
mov ah, 02h ; BIOS.SetCursor
int 10h
mov dx, OFFSET str1
mov ah, 09h ; DOS.PrintString
int 21h
mov dx, 0C1Eh ; At(30,12)
mov ah, 02h ; BIOS.SetCursor
int 10h
mov dx, OFFSET str2
mov ah, 09h ; DOS.PrintString
int 21h
mov dx, 0D23h ; At(35,13)
mov ah, 02h ; BIOS.SetCursor
int 10h
mov dx, OFFSET str3
mov ah, 09h ; DOS.PrintString
int 21h
mov dx, 0E1Eh ; At(30,14)
mov ah, 02h ; BIOS.SetCursor
int 10h
mov dx, OFFSET str4
mov ah, 09h ; DOS.PrintString
int 21h80x25文本屏幕中心的预期输出:
ADRIAN PAUL BS Computer Science 09462524725 macatopaul@gmail.com
https://stackoverflow.com/questions/70270834
复制相似问题