
mov esi,[eax]
mov [0B100000],esi
--------------------------------------
游戏这样修改是不行的因为即使你把字符串传送出去了但是原来的位置依然有一个副本最直接的办法就是修改跳转或者标志
用[]
where 字段like%[Key1,Key2,……]%
[]内里面的任意一个
如:
返回最后一个字母是N或者M,并且倒数第二个字母是E的值
select from 表 where 字段 like '%[n,m]' and like '%e_'
_表示任意一个字符
这也许给你有 用
很遗憾的告诉你!!!!DW我都忘了!!!
不会
这个程序首先你在定义字串的时候使用了STR,这个是作为保留给系统使用的标识符,编译会出错。然后输出字符串时,必须重新把字符串的地址赋给DX,而不是把缓冲区首地址赋给DX,这个与输入 *** 作有区别。缓冲区定义10个单元时,实际你只能输入9个字符,最后一个单元系统自动补$。以下给出一段编译的过的程序给你作为参考:
DATAS SEGMENT
STR1 DB"please input a string:$"
BUF DB 20
DB
DB 20 DUP ()
DATAS ENDS
STACKS SEGMENT STACK
DB 200 DUP() ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START: MOV AX,DATAS
MOV DS,AX
LEA DX,STR1
MOV AH,9
INT 21H
MOV AH,10
LEA DX,BUF
INT 21H
LEA DX,CRLF
MOV AH,9
INT 21H
LEA DX, BUF+2
MOV AH, 9
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
希望对你有所帮助。
DATAS SEGMENT
STR DB"please input a string:$"
BUF DB 20 ;这里的20为指定存放字符的个数(理论上的)
DB ;这的可变,实际存放字符的个数(系统自动计算)
DB 20 DUP () ;这里的20是你在数据段开辟的空间
CRLF DB 0AH,0DH,"$";此处输入数据段代码 ;回车换行
DATAS ENDS
STACKS SEGMENT STACK ;从你的代码看来,这堆栈段可删去
DB 200 DUP() ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START: MOV AX,DATAS
MOV DS,AX
LEA DX,STR ;9号中断前提,给参数DX赋值,指定输出字符串所在的有效地址
MOV AH,9
INT 21H
MOV AH,10 ;10号中断,接收输入字符串,此时DX为存放字符串的有效地址
LEA DX,BUF
INT 21H
LEA DX,CRLF
MOV AH,9
INT 21H
MOV CL,BUF+1 ;获取字符串中字符的个数
LEA SI,BUF+2 ;间接寻址
NEXT: MOV DL,[SI]
MOV AH,2 ;2号中断输出单个字符
INT 21H
INC SI ;输出一个地址往后加1
DEC CL ;顺便减少输出的次数
JNZ NEXT ;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
代码如下:
int main()
{
float r,h,s;
scanf("%f",&r);
scanf("%f",&h);
s=231415926rr+231415926rh
printf("表面积是%f\n",s);
return 0;
}
扩展资料
在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是:
puts():输出字符串并自动换行,该函数只能输出字符串。
printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还能输出其他类型的数据。
注意,输出字符串时只需要给出名字,不能带后边的[ ]。
以上就是关于汇编传递字符串的问题全部的内容,包括:汇编传递字符串的问题、用汇编语言实现字串搜索、关于汇编输出串的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)