本帖最后由 老刘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 | | 老刘制作~COPY |
|