1从屏幕上显示大写字母A
1.从屏幕上显示大写字母A
⏹CODE SEGMENT
⏹ASSUME CS:CODE
⏹MAIN:MOV AH,2
⏹MOV DL,`A`
⏹INT 21H
⏹MOV AH,4CH
⏹INT 21H
⏹CODE ENDS
⏹END MAIN
2.用十进制显示一个按键的ASCII码值
要求连续运行,按空格退出。
CODE SEGMENT
ASSUME CS:CODE
MAIN:MOV AH,1
⏹INT 21H
⏹CMP AL,20H
⏹JZ EXIT
⏹MOV AH,0
⏹MOV BL,100
⏹DIV BL
⏹MOV CL,AL
⏹ADD CL,30H
⏹MOV AL,AH
⏹MOV AH,0
⏹MOV BL,10
⏹DIV BL
⏹ADD AL,30H
⏹ADD AH,30H
⏹MOV BX,AX
⏹MOV AH,2
⏹MOV DL,13
⏹INT 21H
⏹MOV DL,10
⏹INT 21H
⏹MOV DL,CL
⏹INT 21H
⏹MOV DL,BL
⏹INT 21H
⏹MOV DL,BH
⏹INT 21H
⏹JMP MAIN
⏹EXIT: MOV AH,4CH
⏹INT 21H
CODE ENDS
⏹END MAIN
3.从键盘输入三个按键,按ASCII码值从大到小顺序输出,要求格式如2bA/bA2,连续运行,按回车退出(1)。
⏹CODE SEGMENT
⏹ASSUME CS:CODE
⏹MAIN:MOV AH,1
⏹INT 21H
⏹CMP AL,13
⏹JZ EXIT
⏹MOV BH,AL
⏹INT 21H
⏹MOV BL,AL
⏹CMP BH,BL
⏹JA L1
⏹XCHG BH,BL
L1:MOV AH,1
⏹INT 21H
⏹CMP AL,BH
⏹JA L2
⏹CMP al,BL
⏹JB L3
⏹XCHG BL,AL
⏹JMP L3
⏹L2: XCHG BH,AL
⏹XCHG BL,AL
⏹L3:MOV CL,AL
⏹MOV AH,2
⏹MOV DL,'/'
⏹INT 21H
⏹MOV DL, BH
⏹INT 21H
婴儿用品什么牌子好⏹MOV DL,BL
⏹INT 21H
⏹MOV DL,CL
⏹INT 21H
⏹MOV AH,2
⏹MOV DL,13
⏹INT 21H
⏹MOV DL,10
⏹INT 21H
⏹JMP MAIN
EXIT:MOV AX,4C00H
⏹INT 21H
CODE ENDS
⏹END MAIN
4.从键盘读入两个一位数,输出它们的积。
code SEGMENT
ASSUME CS:code
main: MOV AH,1
INT 21H ;读入第一个数符
CMP AL,'0'
JB lab1 ;ASCII值比…0‟小则不是数
字,转lab1
CMP AL,'9'
JA lab1 ;ASCII值比…9‟大也不是数
;字,转lab1
MOV BL,AL ;临时保存在BL中
MOV AH,2
MOV DL,13
MOV AH,1
INT 21H ;读入第二个数符
CMP AL,'0'
JB lab1 ;ASCII值比'0'小则不是数字,转lab1
CMP AL,'9'
JA lab1 ;ASCII值比'9'大也不是数字,转lab1
SUB  AL,30H ;把后读入的数符转换成数值
SUB  BL,30H ;把先读入的数符转换成数值
MUL BL ;两个一位数相乘,积在AX中
MOV BL,10
DIV BL ;分解出积的十位数字与个位数字
ADD AX,3030H
MOV BX,AX
MOV AH,2
MOV DL,13
INT 21H ;回车
MOV DL,10
INT 21H ;换行
MOV DL,BL
INT 21H
MOV DL,BH
INT 21H
JMP lab2
lab1:MOV AH,2
MOV DL,'E'
INT 21H
lab2:MOV AH,4CH
INT 21H ;交还控制权给DOS
code ENDS
END main
5.从键盘接收一个按键,如果按键是小写字母则输出“L”,是大写字母则输出“U”,如果是数字则输出“N”,都不是则输出“*”。【解】
code SEGMENT
ASSUME CS:code
start: MOV AH,1
INT 21H
CMP AL,'0'
JB lab1 ;按键的ASCII小于…0‟,则
;不是字母和数字
CMP AL,'9'
JA lab2 ;不是数字转
MOV DL,'N' ;是数字,准备输出'N'
JMP lab3
lab2: CMP AL,'A'
JB lab1 ;不是字母和数字,转lab1
CMP AL,'Z'
JA lab4 ;不是大写字母转
MOV DL,'U' ;是大写字母,准备输出'U'
JMP lab3
lab4: CMP AL,'a'
JB lab1 ;不是字母和数字,转lab1
CMP AL,'z'
JA lab1  ;不是字母和数字,转lab1
MOV DL,'L' ;是小写字母,准备输出'L'
JMP lab3
lab1: MOV DL,'*' ;不是字母和数字,准备输出'*'
lab3: MOV AH,2
INT 21H ;输出准备好的字符
MOV AH,4CH
INT 21H ;交还控制权给DOS
code ENDS
END start
6.编写完整程序,在一行上依次显示26个大写英文字母。
【分析】英文字母的数目是确定的,如果每次显示一个字母,则循环一定执行26次,这是已知次数的循环。
code SEGMENT
ASSUME CS:code
start: MOV CX,26 ;预定的执行次数26
MOV DL,'A'
lab1: MOV AH,2
INT 21H ;显示一个字母
ADD DL,1 ;准备好下一个字母
LOOP lab1 ;循环控制
MOV AX,4C00H ;AL中放交还控制权时附带的返回码
INT 21H ;交还控制权
code ENDS
END start
7.在屏幕上显示如下由数字拼成的形状:
0123456789
1234567890
2345678901
3456789012
4567890123
5678901234
6789012345
7890123456
8901234567
9012345678
【分析】这是典型的内外循环相套的情况,用外循环控制10行,内循环控制每一行上的10个符号,尽管内外循环都确切地知道执行次数,但只能把其中之一用LOOP指令实现。
【解】
code SEGMENT
ASSUME CS:code
main: MOV BL,0 ;外循环用BL从0数到9控制
lab1: MOV CX,10 ;内循环用LOOP指令,CX中
放次数10
MOV DL,'0…
ADD DL,BL ;DL中放每行第一个要显示的字符
lab2:MOV AH,2
INT 21H ;显示DL中的字符
圆通快递查询运单号ADD DL,1
CMP DL,'9'
JBE lab3
MOV DL,'0' ;DL逐个递增取下一符号,超过'9'则回'0'
;内循环控制
MOV DL,13
INT 21H ;回车
MOV DL,10
鱼干怎么吃INT 21H ;换行
ADD BL,1
CMP BL,10
JB lab1 ;外循环控制
MOV AX,4C00H
INT 21H ;交还控制权
code ENDS
END main
8. 编写完整程序,用二进制输出一个按键的ASCII值。要求格式如A=01000001H,连续运行,按回车退出
CODE SEGMENT
ASSUME CS:CODE
⏹MAIN:MOV AH,1
⏹INT 21H
⏹MOV BL,AL
⏹CMP AL,20H
⏹JE EXIT
⏹MOV AH,2
⏹MOV DL,'='
⏹INT 21H
⏹MOV CX,8
L: MOV AH,0
MOV AL,BL
MOV DL,2
MUL DL
MOV BL,AL
JC L1
MOV DL,30H
JMP L2
L1: MOV DL,31H
L2: MOV AH,2
INT 21H
LOOP L
MOV AH,2
MOV DL,'B'
INT 21H
MOV DL,13
INT 21H
MOV DL,10
INT 21H
JMP MAIN
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
END MAIN
9 .编写完整程序,用十六进制输出一个按键的ASCII值,要求输出形式是:A=41H
⏹code segment
⏹assume cs:code
⏹main:mov ah,1
⏹int 21h
⏹cmp al,20h
⏹je l2
⏹mov ah,0
⏹mov bl,16
⏹div bl
⏹add ax,3030h
⏹mov bx,ax
mov ah,2
mov dl,'='感恩老师演讲稿
int 21h
mov dl,bl
int 21h
cmp bh,39h
jna l1
add bh,07h
l1: mov dl,bh
mov ah,2
int 21h
mov dl,'H'
int 21h
mov dl,13
int 21h
mov dl,10
int 21h
JMP main
l2: mov ah,4ch
int 21h
code ends
end main
10. 字符串输入输出程序实例
【例5.8】编写完整程序,在屏幕上输出下面的图形:
9
89
789
6789
56789
456789
3456789
23456789
123456789
【分析】该图形共有9行,可以用9次输出实现,每次输出一个字符串。每一行输出完后的回车换行操作,可以在定义字符串时直接在串尾加上回车符和换行符实现。该图形还有一个特点,就是每一行的后若干个字符与前一行的内容相同,只是前面比前一行多了一个字符。所以可以只定义一个字符串“123456789”,加上回车、换行符及结束符,第一次从“9”开始输出,第二次从“8”开始输出,……,最后一次输出整个字符串。
【解】
data SEGMENT
buf DB '123456789',13,10,24H
data ENDS
code SEGMENT
ASSUME DS:data,CS:code
main:MOV DX,data
MOV DS,DX
MOV CX,9 ;重复'9'次
LEA DX,[buf+8] ;指向字符'9'
MOV AH,9
lab: INT 21H
SUB DX,1
LOOP lab
MOV AX,4C00H
INT 21H
code ENDS
END main
11.从键盘上读入一个符号串(不超过80字符,且不含'$'),在下一行上原样输出该串。
【分析】用10号子功能输入符号串后,由于最后的按键是回车键,光标会停在同一行的最左边,首先需要换行;输入符号串在输入缓冲区中的填写情况并不符合输出要求,没有结束符“$”,需要在串尾加上“$”;换行可以用单字符输出实现,也可以把输入缓冲区的次字节(是由DOS的10号子功能填写的实际有效按键数)改为换行符,然后从该字节起输出。
【解】
data SEGMENT
buf DB 80,81 DUP(0)
data ENDS
code SEGMENT
ASSUME DS:data,CS:code
main:MOV DX,data
MOV DS,DX
LEA DX,[buf]
MOV AH,10
INT 21H
MOV BL,[buf+1] ;取出实际有效字符数
MOV BH,0
MOV [buf+BX+2], …$‟ ;在输入符号串的尾部加…$‟,
;该位置原先放的是回车键
MOV [buf+1],10 ;输入缓冲区的次字节改为换行符
LEA DX,[buf+1] ;输出串首地址放DX中
MOV AH,9
INT 21H
MOV AX,4C00
INT 21H
code ENDS
END main
12试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。
设三个带符号数分别在三个字变量X、Y、Z中存储。程序流程图如图所示
程序如下:
DA TA SEGMENT
X DW 00ABH
Y DW –5
Z DW 200
MAX DW ?
DA TA ENDS
CODE SEGMENT
ASSUME DS:DA TA,CS:CODE
START:MOV AX,DA TA
MOV DS,AX
MOV AX,X
CMP AX,Y ;X>Y?
JG L1
MOV AX,Y ;Y>Z?
CMP AX,Z
环保板材
JG EXIT
L2:MOV AX,Z
JMP EXIT
四级身份证
L1: CMP AX,Z ;X>Z?
JLE L2
EXIT:MOV MAX,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
1 编写完整程序,用十六进制输出一个按键的ASCII值,要求输出形式是:A=41H
2 编写完整程序,用二进制输出一个按键的ASCII值。
3 编写完整程序,判断一个按键是不是回车键。
4 编写完整程序,输入一个字母,输出该字母在英文字母表中的顺序号,若输入的不是字母则输出“*”。注意输入的字母既可以是大写也可以是小写。
⏹  5 编写完整程序,把键盘输入的三个按键按ASCII值由
小到大的次序输出。
⏹  6 编写完整程序,从键盘读入一个符号串,把各
符号颠倒顺序后输出。
⏹7 设变量k中存放了由100个有符号整数组成的数
组,编写程序段出其中最大的一个,放到AX中。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。