- Assembly code
data segment inputnum db 252 inputlen db ? inputstr db 252 dup(?) showwarn db 'please input s string(less than 252)$' spcount dw ?data endscode segment assume ds:data,cs:codestart: mov ax,data ;数据段装入 mov ds,ax ;显示提示字符串 lea dx,showwarn mov ah,09h int 21h ;用户输入字符串 lea dx,inputnum mov ah,0ah int 21h ;初始化各值 mov bx,0 sub ch,ch mov cl,inputlen ;记录实际字符数 add dx,2 ;使得dx指向首个字符 mov si,0 ;作为下标使用again: ;mov ax,20h ;空格,用于判断 cmp inputstr[si],20h ;比较字符串中该字符是否为空格 jz turn_handle ;如果为空格则转向处理 cmp inputstr[si],'$' ;判断是否结束 jz exit ;结束处理 inc si ;否则自加,判断下一个字符 jmp again ;下一次循环turn_handle: inc bx dec cl mov di,1 add di,sirol_again: mov ax,inputstr[di] //.................... mov inputstr[di-1],ax //................... inc di cmp inputstr[di],'$' jz again jmp rol_againexit: lea dx,inputstr mov ah,09h int 21h mov ah,4ch int 21hcode ends end start
大家看下两出省略号的地方,那里提示有错,这个我觉得应该没问题啊,大家帮忙找找
------解决方案--------------------------------------------------------
用AL
------解决方案--------------------------------------------------------
mov ax,inputstr[di]
mov inputstr[di-1],ax
改为:
mov ax,word ptr [inputstr+di]
mov word ptr [inputstr+di-1],ax