[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 老刘1号 于 2017-5-14 14:57 编辑

8086ASM(DEBUG版)
  1. Echo off&CLS
  2. IF /i "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
  3. echo DEBUG和8086_ASM不支持64位的系统。
  4. Pause&Exit
  5. )
  6. >"%Tmp%\DEBUGASM.TMP" (
  7. Echo A
  8. Echo MOV BX,20 ;一段安全的空间
  9. Echo MOV SS,BX
  10. Echo MOV SP,80 ;清理安全空间
  11. Echo MOV CX,40 ;循环次数(HEX)=清理字节数(128B)/入栈大小(2B)
  12. Echo SUB BX,BX ;清空BX
  13. Echo PUSH BX ;执行入栈(清理)
  14. Echo LOOP 10D ;循环压栈
  15. Echo SUB CX,CX ;清空CX
  16. Echo INT 21H
  17. Echo.&Echo G)
  18. Set /P str=Input a string:
  19. Echo E20:0 "%STR%">>"%Tmp%\DEBUGASM.TMP"
  20. More +25 "%~0" >>"%Tmp%\DEBUGASM.TMP"
  21. For /f "Tokens=2" %%a in (
  22. '^<%tmp%\DEBUGASM.TMP DEBUG^|Findstr /c:"0020:0000"'
  23. ) Do Set /a Strlen=0x%%a
  24. DEL %tmp%\DEBUGASM.TMP
  25. Echo %Strlen%&Pause&Exit /b
  26. A100
  27. MOV BX,20 ;一段安全的空间
  28. MOV DS,BX
  29. SUB BX,BX ;清空BX
  30. MOV CL,[BX] ;获取Ascii
  31. JCXZ 10E ;判断是否为NUL并跳出
  32. INC BX ;计数
  33. JMP 107 ;循环读取
  34. MOV [0],BX ;将字符串长度写入内存
  35. INT 21H
  36. G
  37. D20:0 0
  38. Q
  39. Q
复制代码
1

评分人数

TOP

回复 25# happy886rr


    峰值为71个
DEBUG一行就那么长...

TOP

回复 27# happy886rr


    感谢鼓励,
新版本出炉,峰值达到255个
用法: Batname <String>
继续学习汇编~~
  1. @Echo off
  2. IF /i "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
  3. echo DEBUG和8086_ASM不支持64位的系统。
  4. Pause&Exit
  5. )
  6. Set "Str=%*"
  7. >%tmp%\DEBUGASM.TMP (
  8. ECHO A20:0
  9. ECHO DB "%Str:~,70%"
  10. ECHO DB "%Str:~70,70%"
  11. ECHO DB "%Str:~140,70%"
  12. ECHO DB "%Str:~210,45%"
  13. ECHO DB 0
  14. ECHO.
  15. MORE +20 "%~0"
  16. )
  17. For /f "Tokens=2" %%a in (
  18. '^<%tmp%\DEBUGASM.TMP DEBUG^|Findstr /c:"0020:0000"'
  19. ) Do Set /a Strlen=0x%%a 2>nul
  20. Echo %Strlen%&DEL /F %tmp%\DEBUGASM.TMP&Exit /b
  21. A100
  22. MOV BX,20 ;一段安全的空间
  23. MOV DS,BX
  24. SUB BX,BX ;清空BX
  25. MOV CL,[BX] ;获取Ascii
  26. JCXZ 10E ;判断是否为NUL并跳出
  27. INC BX ;计数
  28. JMP 107 ;循环读取
  29. MOV [0],BX ;将字符串长度写入内存
  30. INT 21H
  31. G
  32. D20:0 0
  33. Q
  34. 老刘制作~
复制代码
1

评分人数

TOP

返回列表