Board logo

标题: 字符转换ASCII码--之--批处理 [打印本页]

作者: PPdos     时间: 2008-5-26 05:10    标题: 字符转换ASCII码--之--批处理

搜索了下网上关于汇编的应用,编了这个字符转换ascii码的P,精炼而实用
CODE:  [Copy to clipboard]
@echo off
title 字符转换ASSCII码
more +4 %~s0|debug|find "20"
pause&exit
A100
MOV DX,109
MOV AH,9
INT 21
INT 20
DB 'www.cn-dos.net $'

D100
q
显示结果中CD-20与"20 24"之间的数值即是

  Quote:
140B:0107 INT 20
140B:0100  BA 09 01 B4 09 CD 21 CD-20 77 77 77 2E 63 6E 2D   ......!. www.cn-
140B:0110  64 6F 73 2E 6E 65 74 20-24 00 00 00 34 00 FA 13   dos.net $...4...
140B:0120  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
Press any key to continue . . .

[ Last edited by PPdos on 2008-5-26 at 05:12 AM ]
作者: nipo     时间: 2008-5-26 06:46    标题: 楼主能简单解释一下原理和功能吗?

运行结果:

0BED:0107 INT 20
0BED:0100  BA 09 01 B4 09 CD 21 CD-20 77 77 77 2E 63 6E 2D   ......!. www.cn-
0BED:0110  64 6F 73 2E 6E 65 74 20-24 BA A4 8A 34 00 DC 0B   dos.net $...4...
0BED:0120  06 D5 96 00 00 FE 06 D7-99 C3 8B 1E 13 99 33 C9   ..............3.
0BED:0160  F6 06 15 99 20 75 0A 80-3E D2 99 00 75 BB 49 74   .... u..>...u.It
Press any key to continue . . .
作者: WANKOILZ     时间: 2008-5-26 14:05
强悍。
我想把这个用prompt做出来以传递变量,但结果不能成功,大家看下是什么原因:
CODE:  [Copy to clipboard]
@echo off
title 字符转换ASSCII码
set/p chr=请输入要转换的字符:
prompt A100$_MOV DX,109$_MOV AH,9$_INT 21$_INT 20$_DB '%chr% $$'$_$S$_D100$_q$_|debug|find "20">a.txt
pause&exit

作者: PPdos     时间: 2008-5-26 22:23
在下只是比个葫芦画瓢 要真正了解其中玄机 还得深入了解汇编技术

怎么把 任意字符输入变量显示出来 暂时没有答案 感兴趣的可以研究下
作者: joyn     时间: 2008-5-26 22:47
汇编.......学起来不方便呢~~
作者: slore     时间: 2008-5-26 22:53
@echo off
title 字符转换ASSCII码
more +4 %~s0|debug|find ":0100"
pause&exit
A100
DB 'www.cn-dos.net'

D100
q
作者: PPdos     时间: 2008-5-26 23:07
哈哈 高手!
作者: WANKOILZ     时间: 2008-5-27 14:44
6楼的真是简洁。

查了下资料:
使用 a 命令提供两个常用的伪指令:db 操作码,将字节值直接汇编到内存,dw 操作码,将字值直接汇编到内存。以下是两个伪指令的范例:
db 1,2,3,4,"THIS IS AN EXAMPLE"
db 'THIS IS A QUOTATION MARK:"'
db "THIS IS A QUOTATION MARK:'"
dw 1000,2000,3000,"BACH"

d [range]
参数
range
指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。有关有效的 range 值的信息,请单击“相关主题”列表中的“Debug 说明”。如果不指定 range,Debug 程序将从以前 d 命令中所指定的地址范围的末尾开始显示 128 个字节的内容。
有关显示寄存器内容的信息,请单击“相关主题”列表中的 Debug R(寄存器)。
说明
当使用 d 命令时,Debug 以两个部分显示内存内容:十六进制部分(每个字节的值都用十六进制格式表示)和 ASCII 码部分(每个字节的值都用 ASCII 码字符表示)。每个非打印字符在显示的 ASCII 部分由句号 (.) 表示。每个显示行显示 16 字节的内容,第 8 字节和第 9 字节之间有一个连字符。每个显示行从 16 字节的边界上开始。
范例
假定键入以下命令:
dcs:100 10f
Debug 按以下格式显示范围中的内容:
04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 TOM.SAWYER......




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5