- 根据输入的数字1-7,分别显示相应的英文星期名,如果输入其他字符,则提示错误输出,程序关闭。
- 判断输入字符:如果是大写字母,则输出对应小写字母;如果是小写字母,则输出对应大写字母;如果是数字,则提示输出数字,否则,输出错误信息,程序关闭。
- 根据x计算y值:如果x<0,则y=x^2;如果0<=x<10,则y=2x;否则y=x/3。
代码一
;1. 根据输入的数字1-7,分别显示相应的英文星期名,如果输入其他字符,则提示错误输出,程序关闭。
DATAS SEGMENT
;此处输入数据段代码
D1 DB 0DH,0AH, 'Please enter a number(1-7): ','$'
D2 DB 0DH,0AH,0DH,0AH, 'The input number is incorrect, and the program ends.','$'
D3 DB 0DH,0AH,0DH,0AH, 'The program executes normally, and the output result is:','$'
D4 DB 0DH,0AH,'$'
MON DB 'Monday$'
TUES DB 'Tuesday$'
WED DB 'Wednesday$'
THUR DB 'Thurday$'
FRI DB 'Friday$'
SAT DB 'Saturday$'
SUN DB 'Sunday$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV DX,OFFSET D1 ;提示输入数字 DX获得D1的偏移地址
MOV AH,9
INT 21H
MOV AH,1 ;1号功能,等待用户输入单字符
INT 21H
CMP AL,'1'
JZ MONDAY
CMP AL,'2'
JZ TUESDAY
CMP AL,'3'
JZ WEDNESDAY
CMP AL,'4'
JZ THURSDAY
CMP AL,'5'
JZ FRIDAY
CMP AL,'6'
JZ SATURDAY
CMP AL,'7'
JZ SUNDAY
MOV DX,OFFSET D2 ;字符不符合,输出提示,程序结束 DX获得D1的偏移地址
MOV AH,9
INT 21H
JMP DONE
MONDAY:
MOV BX,OFFSET MON
JMP OUTPUT
TUESDAY:
MOV BX,OFFSET TUES
JMP OUTPUT
WEDNESDAY:
MOV BX,OFFSET WEDNESDAY
JMP OUTPUT
THURSDAY:
MOV BX,OFFSET THUR
JMP OUTPUT
FRIDAY:
MOV BX,OFFSET FRI
JMP OUTPUT
SATURDAY:
MOV BX,OFFSET SAT
JMP OUTPUT
SUNDAY:
MOV BX,OFFSET SUN
JMP OUTPUT
OUTPUT:
MOV DX,OFFSET D3
MOV AH,9
INT 21H
MOV DX,BX
MOV AH,9
INT 21H
JMP DONE
DONE:
MOV DX,OFFSET D4
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
代码二
;2. 判断输入字符:如果是大写字母,则输出对应小写字母;如果是小写字母,则输出对应大写字母;如果是数字,则提示输出数字,否则,输出错误信息,程序关闭。
DATAS SEGMENT
;此处输入数据段代码
D1 DB 0DH,0AH, 'Please enter a character: ','$'
D2 DB 0DH,0AH,0DH,0AH, 'The input character is incorrect, and the program ends.','$'
D3 DB 0DH,0AH,0DH,0AH, 'The input character is a number, and the program ends normally.','$'
D4 DB 0DH,0AH,0DH,0AH, 'The input characters are converted to lowercase letters as follows: ','$'
D5 DB 0DH,0AH,0DH,0AH, 'The input characters are converted into uppercase letters as follows: ','$'
D6 DB 0DH,0AH,'$'
RESULT DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV DX,OFFSET D1 ;提示输入数字 DX获得D1的偏移地址
MOV AH,9
INT 21H
MOV AH,1 ;1号功能,等待用户输入单字符
INT 21H
CMP AL,30H
JL ERROR ;小于30输入错误
CMP AL,39H
JLE NUM ;大于30小于等于39跳转数字判断逻辑
CMP AL,41H
JL ERROR ;大于39小于41输入错误
CMP AL,5AH
JLE TOLOWERCASE ;大于等于41小于等于5A跳转转小写字母
CMP AL,61H
JL ERROR ;大于等于5A小于61输入错误
CMP AL,7AH
JLE TOCAPITAL ;大于等于61小于7A跳转转大写字母
NUM:
MOV DX,OFFSET D3
MOV AH,9
INT 21H
JMP DONE
TOCAPITAL:
MOV DX,OFFSET D4
MOV AH,9
INT 21H
;将输入的小写字母减20H转成大写字母
SUB AL,20H
; 输出内容
MOV DL,AL
MOV AH,2
INT 21H
JMP DONE
TOLOWERCASE:
MOV DX,OFFSET D5
MOV AH,9
INT 21H
;将输入的大写字母加20H转成小写字母
ADD AL,20H
; 输出内容
MOV DL,AL
MOV AH,2
INT 21H
JMP DONE
ERROR:
MOV DX,OFFSET D2
MOV AH,9
INT 21H
DONE:
MOV DX,OFFSET D6
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
代码三
;3. 根据x计算y值:如果x<0,则y=x^2;如果0<=x<10,则y=2x;否则y=x/3。
DATAS SEGMENT
;此处输入数据段代码
X DW 11
Y DW ?
Z DW ?
M DB ?
N DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV AX,X
CMP AX,0
JGE CALCULATION2;大于等于0
CALCULATION1:
MOV BX,X
IMUL BX
MOV Y,AX
MOV Z,DX
JMP DONE
CALCULATION2:
CMP AX,10
JGE CALCULATION3;大于等于10
ADD AX,AX
MOV Y,AX
JMP DONE
CALCULATION3:
MOV BL,3
IDIV BL;商AL 余AH
MOV M,AL
MOV N,AH
DONE:
MOV AH,4CH
INT 21H
CODES ENDS
END START
代码一
调用1号功能输入一个字符,到AL,比较当前字符,如果为数字1-7,则跳转到相应输出,若没有匹配到相应输出,则最后提示错误字符,退出程序,如1,转到MONDAY,设置BX,转到OUTPUT进行输出,最后转至DONE结束程序执行。
代码二
调用1号功能输入一个字符,对其使用CMP指令进行判断ASCII码,根据ASCII码的范围判断是数字,大写字母,小写字母或其他字符,如果是数字,直接给出输出,如果是大写字母,则使用ADD AL,20H转为小写进行内容输出,如果是小写字母则使用SUB AL,20H转为大写进行输出,若是其他字符,则ERROR报错结束程序执行。

图表 1 参考

图表 2 参考
代码三
在DATA段内存储X的值,判断X的范围,分支进行Y的运算,并存储结果,Z存储乘积高位,Y存储低位,M存储商,N存储余数,最后在寄存器中展示结果。
代码一

图表 3 非正常情况

图表 4 正常输入
代码二

图表 5 小写转大写

图表 6 大写转小写

图表 7 错误输入

图表 8 输入数字
代码三

图表 9 x=-2执行

图表 10 x=-2结果

图表 11 x=4结果

图表 12 x=11运行

图表 13 x=11结果