1、这两个题目,存在一个共同的错误:Intel8086/8088指令集,数据传送指令用mov,而不是move。
2、除非递归深度较大,绝大多数程序,不必定义堆栈段。
3、程序中若未涉及变量,不必定义数据段。
题目1
编写一个程序,把从键盘输入的一个小写字母用大写字母显示出来
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code
Start: mov ah,1
int 21h
cmp al,27 ;Esc?
jz Exit_Proc ;是,转去结束程序
cmp al,'a'
jb Start
cmp al,'z'
ja Start
push ax
mov dl,20h ;空一格
mov ah,2
int 21h
pop ax
mov dl,al
and dl,0dfh ;小写变大写
mov ah,2
int 21h
mov dl,13 ;回车
mov ah,2
int 21h
mov dl,10 ;换行
mov ah,2
int 21h
jmp Start
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
题目2
把move改成mov就Ok了。
题目1
Code Segment
Assume CS:Code
Start: mov ah,1
int 21h
cmp al,27 ;Esc?
jz Exit_Proc ;是,转去结束程序
cmp al,'a'
jb Start
cmp al,'z'
ja Start
push ax
mov dl,20h ;空一格
mov ah,2
int 21h
pop ax
mov dl,al
and dl,0dfh ;小写变大写
mov ah,2
int 21h
mov dl,13 ;回车
mov ah,2
int 21h
mov dl,10 ;换行
mov ah,2
int 21h
jmp Start
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start