本帖最后由 老刘1号 于 2017-6-17 14:58 编辑
用8086写的最后一道练习题
相关:http://www.bathome.net/redirect.php?goto=findpost&ptid=43372&pid=200443
延时就不搞了
用法 UPPER_Case.CMD Hollo World!- %老刘制作——字符串转大写(只改动英文字母)%
- %由于DOS子系统的限制,汉字将会丢失,变作两个英文问号%
- @Echo off
- IF /i "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
- Echo DEBUG和8086_ASM不支持64位的系统。
- Pause&Exit
- )
- IF "%*" NEQ "" (Set "Str=%*") Else GOTO :EOF
- For /F "DELIMS=" %%. in (
- '^(Echo E 20:0 "%Str:"=%",0^&MORE +18 "%~0"^)^|DEBUG'
- ) Do (
- IF "%%." NEQ "Program terminated normally" (
- Set "转换后字符=%%."
- ) Else (
- CALL ECHO %%转换后字符%%
- GOTO :EOF
- )
- )
- R DS
- 20
- R AX
- 200
- A 100
- ;汇编代码开始——————————————
- MOV DL,[BX] ;得到BX指向字符的Ascii码
- CMP DL,00 ;检测是否为字符串末端
- JE 11B ;如果为末端,跳到INT指令处退出
- ;分割————————————————————
- CMP DL,61 ;检测是否是小写字母
- JB 114
- CMP DL,7A
- JA 114
- ;分割————————————————————
- AND DL,5F ;转换为大写字符
- INT 21H ;显示字符
- INC BX ;BX指向下一个字符
- JMP 100 ;循环读取
- ;分割————————————————————
- MOV AH,0 ;退出
- INT 20H
- ;汇编代码结束——————————————
- ;注意:下方的空行不能移除
-
- G
- Q
- 老刘制作~
复制代码
|