Assembly 汇编X86语言问题
以相反的顺序一次打印一个字符 秩序。将程序命名为HELLO4.ASM。(使用“推”和 “流行音乐” 保留另一个变量,该变量将保存消息 使用“推送”和“弹出”功能反转顺序。然后使用 函数9或函数40h。将此程序命名为HELLO5.ASM 这是我关于汇编语言的作业,这是我目前正在做的工作,但它不是相反的Assembly 汇编X86语言问题,assembly,x86,Assembly,X86,以相反的顺序一次打印一个字符 秩序。将程序命名为HELLO4.ASM。(使用“推”和 “流行音乐” 保留另一个变量,该变量将保存消息 使用“推送”和“弹出”功能反转顺序。然后使用 函数9或函数40h。将此程序命名为HELLO5.ASM 这是我关于汇编语言的作业,这是我目前正在做的工作,但它不是相反的 ; (Hello4) .386 .model flat,stdcall .stack 4096 .data aName BYTE "Hello, DOS Here!$" nameSize
; (Hello4)
.386
.model flat,stdcall
.stack 4096
.data
aName BYTE "Hello, DOS Here!$"
nameSize = ($ - aName) - 1
.code
main PROC
mov ecx,nameSize
esi,0
L1: movzx eax,aName[esi]
push eax
inc esi
loop L1
mov ecx,nameSize
esi,0
L2: pop eax
mov aName[esi],al
inc esi
loop L2
mov ah,9
int 21h
main ENDP
end main
尝试修复代码中的一些OOP并手动初始化数据段:
; (Hello4)
.386
.model flat,stdcall
.stack 4096
.data
aName BYTE "Hello, DOS Here!$"
nameSize = ($ - aName) - 1
.code
main PROC
mov ax,@data ;◄■■ INITIALIZE DATA
mov ds,ax ;◄■■ SEGMENT MANUALLY.
mov ecx,nameSize
esi,0 ;◄■■ MOV ESI,0
L1: movzx eax,aName[esi]
push eax
inc esi
loop L1
mov ecx,nameSize
esi,0 ;◄■■ MOV ESI,0
L2: pop eax
mov aName[esi],al
inc esi
loop L2
mov ah,9
int 21h
main ENDP
end main
在之前的更改之后,它对我有效,并向后显示字符串