在汇编语言的新行上给出 Space
Give Space on new line in assembly language
我是汇编语言的新手。我的任务是为以下输出编写代码:
Q) 使用Only One Macro definition写出以下输出的汇编代码
My name is xxxxx
My rollnumber is yyyyy
What is Your name
到目前为止我所做的是打印这些字符串,但我没有在字符串的开头得到这些空格。
我的密码:
display macro data
mov ah,9
lea dx,msg1
int 21h
mov ah,9
lea dx,msg2
int 21h
mov ah,9
lea dx,msg3
int 21h
endm
.model small
.stack 100h
.data
msg1 db "My name is Adeena Lathiya $"
msg2 db 0ah,0dh, "My roll number is SE-009 $"
msg3 db 0ah, 0dh, "What is Your name $"
.code
main proc
mov ax,@data
mov ds,ax
display data
main endp
end main
这会将输出显示为:
My name is xxxxx
My rollnumber is yyyyy
What is Your name
请告诉我如何在字符串的开头添加空格
...using Only One Macro definition
当然任务说你只能有 1 个宏定义,但它并没有告诉你只调用一次宏!
此外,宏的强大功能部分来自其可替换参数,您当前的实现提到但根本没有使用!
显示宏
这个基本宏使用 1 个参数:aString 指定消息的地址。
Display MACRO aString
lea dx, aString
mov ah, 09h ; DOS.PrintString
int 21h
ENDM
像这样使用它:
mov ax, @data
mov ds, ax
Display msg1
Display msg2
Display msg3
...
msg1 db "My name is Adeena Lathiya", 13, 10, "$"
msg2 db " My roll number is SE-009", 13, 10, "$"
msg3 db " What is Your name $"
^
The required spaces!
此处您要查找的空格已插入到存储的字符串中。
IndentedDisplay 宏
这次宏使用了2个参数:Indentation指定文本前面的空格数,aString指定地址消息。
IndentedDisplay MACRO Indentation, aString
LOCAL More, Skip
mov cx, Indentation
jcxz Skip
More:
mov dl, " "
mov ah, 02h ; DOS.PrintChar
int 21h
loop More
Skip:
lea dx, aString
mov ah, 09h ; DOS.PrintString
int 21h
ENDM
像这样使用它:
mov ax, @data
mov ds, ax
IndentedDisplay 0, msg1
IndentedDisplay 1, msg2
IndentedDisplay 3, msg3
...
msg1 db "My name is Adeena Lathiya", 13, 10, "$"
msg2 db "My roll number is SE-009", 13, 10, "$"
msg3 db "What is Your name $"
此处您要查找的空格将从 运行 宏代码.
中插入
我是汇编语言的新手。我的任务是为以下输出编写代码:
Q) 使用Only One Macro definition写出以下输出的汇编代码
My name is xxxxx
My rollnumber is yyyyy
What is Your name
到目前为止我所做的是打印这些字符串,但我没有在字符串的开头得到这些空格。
我的密码:
display macro data
mov ah,9
lea dx,msg1
int 21h
mov ah,9
lea dx,msg2
int 21h
mov ah,9
lea dx,msg3
int 21h
endm
.model small
.stack 100h
.data
msg1 db "My name is Adeena Lathiya $"
msg2 db 0ah,0dh, "My roll number is SE-009 $"
msg3 db 0ah, 0dh, "What is Your name $"
.code
main proc
mov ax,@data
mov ds,ax
display data
main endp
end main
这会将输出显示为:
My name is xxxxx
My rollnumber is yyyyy
What is Your name
请告诉我如何在字符串的开头添加空格
...using Only One Macro definition
当然任务说你只能有 1 个宏定义,但它并没有告诉你只调用一次宏!
此外,宏的强大功能部分来自其可替换参数,您当前的实现提到但根本没有使用!
显示宏
这个基本宏使用 1 个参数:aString 指定消息的地址。
Display MACRO aString
lea dx, aString
mov ah, 09h ; DOS.PrintString
int 21h
ENDM
像这样使用它:
mov ax, @data
mov ds, ax
Display msg1
Display msg2
Display msg3
...
msg1 db "My name is Adeena Lathiya", 13, 10, "$"
msg2 db " My roll number is SE-009", 13, 10, "$"
msg3 db " What is Your name $"
^
The required spaces!
此处您要查找的空格已插入到存储的字符串中。
IndentedDisplay 宏
这次宏使用了2个参数:Indentation指定文本前面的空格数,aString指定地址消息。
IndentedDisplay MACRO Indentation, aString
LOCAL More, Skip
mov cx, Indentation
jcxz Skip
More:
mov dl, " "
mov ah, 02h ; DOS.PrintChar
int 21h
loop More
Skip:
lea dx, aString
mov ah, 09h ; DOS.PrintString
int 21h
ENDM
像这样使用它:
mov ax, @data
mov ds, ax
IndentedDisplay 0, msg1
IndentedDisplay 1, msg2
IndentedDisplay 3, msg3
...
msg1 db "My name is Adeena Lathiya", 13, 10, "$"
msg2 db "My roll number is SE-009", 13, 10, "$"
msg3 db "What is Your name $"
此处您要查找的空格将从 运行 宏代码.
中插入