用masm软件汇编使用子程序显示十行相同字符串
时间: 2023-12-04 19:06:15 浏览: 45
下面是使用MASM汇编语言编写的程序,可以显示十行相同的字符串。该程序使用了一个子程序来输出字符串。
```assembly
.model small
.stack 100h
.data
msg db 'Hello, World!', 0Ah, '$'
.code
main proc
mov ax, @data
mov ds, ax
mov cx, 10 ; 循环10次
mov si, offset msg ; 将字符串地址存储在si寄存器中
call print_string ; 调用子程序输出字符串
mov ah, 4Ch ; 退出程序
int 21h
main endp
print_string proc
mov ah, 09h ; 调用DOS的打印字符串功能
int 21h
ret
print_string endp
end main
```
在这个程序中,我们定义了一个字符串 `msg`,并将其地址存储在 `si` 寄存器中。然后我们使用 `call` 指令调用 `print_string` 子程序来输出字符串。循环10次,每次输出同样的字符串。
在子程序中,我们使用 `int 21h` 调用DOS的打印字符串功能来输出字符串。最后使用 `ret` 返回到主程序中。
你可以将上述代码保存为 `.asm` 文件,使用MASM汇编器进行汇编、链接和运行。
相关问题
用masm2015软件汇编使用子程序显示十行相同字符串
下面是使用 MASM 2015 汇编语言编写的示例程序,可以显示十行相同的字符串:
```
TITLE Display Multiple Lines of Strings
INCLUDE Irvine32.inc
.data
msg BYTE "Hello, World!",0
.code
main PROC
mov ecx, 10 ; Repeat 10 times
call DisplayMsg ; Call the DisplayMsg subroutine
exit ; Exit program
main ENDP
DisplayMsg PROC
mov edx, OFFSET msg ; Load address of the string into EDX
call WriteString ; Output the string
call Crlf ; Move cursor to next line
ret
DisplayMsg ENDP
END main
```
在这个程序中,首先定义了一个字符串 `msg`,然后在 `main` 过程中使用 `call` 命令调用了 `DisplayMsg` 子程序,重复显示 `msg` 字符串 10 次。`DisplayMsg` 子程序中,将字符串地址加载到 `EDX` 寄存器中,然后使用 `WriteString` 命令输出字符串。最后使用 `Crlf` 命令将光标移动到下一行,并使用 `ret` 命令返回到 `main` 过程。
编译和链接后,运行程序即可在命令行界面上看到十行相同的字符串。
请使用子程序在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串“welcome to masm”汇编语言
好的,以下是汇编语言的代码:
```
.MODEL SMALL
.STACK 100H
.DATA
message1 DB 'welcome to masm', 0
message2 DB 'welcome to masm', 0
message3 DB 'welcome to masm', 0
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
; 显示绿色字符串
CALL SHOW_GREEN_MSG
; 显示绿底红色字符串
CALL SHOW_GREEN_RED_MSG
; 显示白底蓝色字符串
CALL SHOW_WHITE_BLUE_MSG
MOV AH, 4CH
INT 21H
MAIN ENDP
; 显示绿色字符串子程序
SHOW_GREEN_MSG PROC
MOV AH, 0CH ; 显示函数号
MOV AL, 02H ; 绿色
MOV BH, 00H ; 背景色
MOV CX, 14 ; 字符串长度
MOV DX, 27 ; X坐标
MOV DH, 12 ; Y坐标
MOV SI, OFFSET message1 ; 字符串地址
INT 10H ; 调用BIOS中断显示字符串
RET
SHOW_GREEN_MSG ENDP
; 显示绿底红色字符串子程序
SHOW_GREEN_RED_MSG PROC
MOV AH, 0CH ; 显示函数号
MOV AL, 04H ; 红色
MOV BH, 02H ; 绿底
MOV CX, 14 ; 字符串长度
MOV DX, 25 ; X坐标
MOV DH, 13 ; Y坐标
MOV SI, OFFSET message2 ; 字符串地址
INT 10H ; 调用BIOS中断显示字符串
RET
SHOW_GREEN_RED_MSG ENDP
; 显示白底蓝色字符串子程序
SHOW_WHITE_BLUE_MSG PROC
MOV AH, 0CH ; 显示函数号
MOV AL, 01H ; 蓝色
MOV BH, 07H ; 白底
MOV CX, 14 ; 字符串长度
MOV DX, 23 ; X坐标
MOV DH, 14 ; Y坐标
MOV SI, OFFSET message3 ; 字符串地址
INT 10H ; 调用BIOS中断显示字符串
RET
SHOW_WHITE_BLUE_MSG ENDP
END MAIN
```
这个程序使用了BIOS中断来在屏幕上显示字符串。每个子程序都设置了不同的前景色和背景色,以显示不同的颜色组合。