输出很多字符串的方法(汇编),讨论下,答者有(份)分!!!!
时间:2011-01-10
来源:互联网
现在有两种输出字符串的方法,一种是调用21号中断09h,此方法为输出简短的字符串,结尾以$结束,适合少量字符串输出。
第二种方法为调用10号中断13h,此方法可以输出大量字符串(把要输出字符串写在一起table),缺点就是字符串的长度要指定,不然会出错。那有没有一种方法,既能大量输出字符串,又能不指定长度的方法吗?
比如,我要输出字符如下: afdfafasgagagaga:fdkafkjafkjfkslafjklsafjsklafjaskfjaffjalkfjaflfjakfaf:,
afasgaghd;gjaoeirjgalgjaigjagjalgja;
afjalfjalfjasfljsaflkjaflkafa;fasfaf:,ajdfakljfalkjglkajflaksfjasf:,sdfjas;fljaskfljsadflkjsalkfjalfjsalkfja:,
有没有一种简单方法,可以这样:char_table db lakfjalkfjlakfjlfjlafjlaf
db fjalkfjslakfjalsfjasflkjflkjaflkjaflkk
db fjslfkjalskfjlsafkjalksfjalsfjlasfj
db weoiujoj lgjm;z/jfaogaojgaeogjadlggjklagoeigjaelkgj
这样输出呢?或许还有更简单的?
第二种方法为调用10号中断13h,此方法可以输出大量字符串(把要输出字符串写在一起table),缺点就是字符串的长度要指定,不然会出错。那有没有一种方法,既能大量输出字符串,又能不指定长度的方法吗?
比如,我要输出字符如下: afdfafasgagagaga:fdkafkjafkjfkslafjklsafjsklafjaskfjaffjalkfjaflfjakfaf:,
afasgaghd;gjaoeirjgalgjaigjagjalgja;
afjalfjalfjasfljsaflkjaflkafa;fasfaf:,ajdfakljfalkjglkajflaksfjasf:,sdfjas;fljaskfljsadflkjsalkfjalfjsalkfja:,
有没有一种简单方法,可以这样:char_table db lakfjalkfjlakfjlfjlafjlaf
db fjalkfjslakfjalsfjasflkjflkjaflkjaflkk
db fjslfkjalskfjlsafkjalksfjalsfjlasfj
db weoiujoj lgjm;z/jfaogaojgaeogjadlggjklagoeigjaelkgj
这样输出呢?或许还有更简单的?
作者: zhuyi108 发布时间: 2011-01-10
用2号功能也可以。
Assembly code
Assembly code
; ;This Program Compiled Sucess by Masm 6.15 ; assume cs:code,ds:data data segment char db 'sferwerwersdfjsd;lf',0dh,0ah,'j;werwerouwierjl;sdfj,' db 'sdjfwoerjowejrlwerj;wler;werew.' db 'sdfjowerjowerowerweoruwerwe;rwejr;' db '234suodfj2930mnof0sdflsdkf' data ends code segment start: mov ax,data mov ds,ax mov bx,offset char mov ah,2 disp: cmp byte ptr [bx],0 jz ok mov dl,[bx] int 21h inc bx jmp disp ok: mov ah,4ch int 21h code ends end start
作者: masmaster 发布时间: 2011-01-10
引用楼主 zhuyi108 的回复:
现在有两种输出字符串的方法,一种是调用21号中断09h,此方法为输出简短的字符串,结尾以$结束,适合少量字符串输出。
第二种方法为调用10号中断13h,此方法可以输出大量字符串(把要输出字符串写在一起table),缺点就是字符串的长度要指定,不然会出错。那有没有一种方法,既能大量输出字符串,又能不指定长度的方法吗?
比如,我要输出字符如下: afdfafasgagagaga:fdkafkjaf……
现在有两种输出字符串的方法,一种是调用21号中断09h,此方法为输出简短的字符串,结尾以$结束,适合少量字符串输出。
第二种方法为调用10号中断13h,此方法可以输出大量字符串(把要输出字符串写在一起table),缺点就是字符串的长度要指定,不然会出错。那有没有一种方法,既能大量输出字符串,又能不指定长度的方法吗?
比如,我要输出字符如下: afdfafasgagagaga:fdkafkjaf……
再长的字符串也的有个结束的标志吧。我试过21号中断09h功能,只受段长度的限制,没有额外的长度限制。
Assembly code
c segment assume cs:c,ds:d,ss:s start: mov ax,d mov ds,ax mov ah,9 lea dx,b int 21h mov ah,4ch int 21h c ends d segment b db 0fff0h dup('a'),'12345678901234$' d ends s segment stack dw 300 dup(?) s ends end start
作者: shzhfu 发布时间: 2011-01-10
哈哈木叶又浮出水面了
不懂,来围观学习的
不懂,来围观学习的
作者: JustFromHell 发布时间: 2011-01-10
引用 2 楼 shzhfu 的回复:
引用楼主 zhuyi108 的回复:
现在有两种输出字符串的方法,一种是调用21号中断09h,此方法为输出简短的字符串,结尾以$结束,适合少量字符串输出。
第二种方法为调用10号中断13h,此方法可以输出大量字符串(把要输出字符串写在一起table),缺点就是字符串的长度要指定,不然会出错。那有没有一种方法,既能大量输出字符串,又能不指定长度的方法吗?
比如,我要输出字符如下: afdfaf……
引用楼主 zhuyi108 的回复:
现在有两种输出字符串的方法,一种是调用21号中断09h,此方法为输出简短的字符串,结尾以$结束,适合少量字符串输出。
第二种方法为调用10号中断13h,此方法可以输出大量字符串(把要输出字符串写在一起table),缺点就是字符串的长度要指定,不然会出错。那有没有一种方法,既能大量输出字符串,又能不指定长度的方法吗?
比如,我要输出字符如下: afdfaf……
你误解了,我意思是很多字符串(他们之间没关联),长度不一,问题是要很方便简单的按照你的意图输出这些长度不一很多个字符串,要是一个一个用21号09h中断你觉得不麻烦吗?
作者: zhuyi108 发布时间: 2011-01-10
引用 1 楼 masmaster 的回复:
用2号功能也可以。
Assembly code
;
;This Program Compiled Sucess by Masm 6.15
;
assume cs:code,ds:data
data segment
char db 'sferwerwersdfjsd;lf',0dh,0ah,'j;werwerouwierjl;sdfj,'
……
用2号功能也可以。
Assembly code
;
;This Program Compiled Sucess by Masm 6.15
;
assume cs:code,ds:data
data segment
char db 'sferwerwersdfjsd;lf',0dh,0ah,'j;werwerouwierjl;sdfj,'
……
你这个方法不错,但是有个问题,字符串全部连在一起输出了,可是字符如果之间没有联系,我想让他在屏幕什么地方输出就输出,这个的话,就得不偿失了~
作者: zhuyi108 发布时间: 2011-01-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28