返回列表 发帖
本帖最后由 老刘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

TOP

返回列表