汇编语言 逆序输出字符串

data1 segment
     stri db 'BASED ADDRESSING','$'
data1 ends


stack1 segment stack
      dw 20h dup(?)
      top label word
stack1 ends


code segment
     main proc far
     assume ds:data1,cs:code,ss:stack1
     
;start:




     mov ax,data1
     mov ds,ax ;把数据放进ax寄存器,再放到ds段寄存器中
     
     mov ax,stack1
     mov ss,ax
     lea sp,top  ;把栈也放在ss段寄存器中,sp记录栈顶位置
     
     lea si,stri;用si记录字符串
     mov cx,0      ;cx记录字符串的长度


line1:
     cmp byte ptr [si],'$'   ;cmp比较指令,对两数进行相减,进行比较
     je input                ;je条件转移指令
     inc si                  ;inc 自增符号
     inc cx
     jmp line1               ;无条件转移指令jmp
     
input:
     lea si,stri            
     add si,cx
     dec si                   ;dec减一指令
line2:
     mov dl,[si]
     mov ah,02h               ;显示输出
     int 21h
     dec si
     loop line2               ;循环
exit:
     mov ah,4ch               ;带返回码终止
     int 21h


main endp
     
code ends

    end 

一开始,一直出现错误指令:

E:\002.ASM(17) : error A2004: symbol type conflict

后来,通过修改配置->系统配置->编译/脚本->单独文件默认使用DOS模式

但是可能是因为win10 64位,下载的debug.exe那些都无法打开,很令人烦恼。。。

难道要弄个双系统???

你可能感兴趣的:(assembly)