[英]Trying to center 4 lines of string in assembly language
所以我是匯編語言的新手,我正在嘗試將 4 個字符串居中。 但我不知道為什么它不起作用。
這些是我在代碼中使用的 4 個字符串。 當我運行程序時, str1是唯一一個到中心的。 rest 位於左側。
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
MOV CX,001Ah MOV AH, 02h INT 21h
這些行調用DOS api function 02h 可以顯示DL
寄存器中 ASCII 碼的字符。 你沒有使用DL
,所以結果會出乎意料。
也許您正在嘗試 position cursor 與BIOS api ZC1C425268E68385D1AB5027C 鑒於您的任務描述,這將是有道理的。
在輸出每個字符串之前最好的 position cursor。 並且不要在字符串中包含回車符 (13) 和換行符 (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 21h
預期 output 位於 80x25 文本屏幕的中心:
ADRIAN PAUL BS Computer Science 09462524725 macatopaul@gmail.com
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.