CMP AL,90 JB C80
INC BH ;≥90分的人数 JMP AAA C80: CMP AL,80 JB C70
INC BL ;≥80分的人数 JMP AAA C70: CMP AL,70 JB C60
INC DH ;≥70分的人数 JMP AAA C60: CMP AL,60 JB AAA
INC DL ;≥60分的人数 JMP AAA AAA: INC SI
LOOP NEXT MOV AL,80 SUB AL,BH SUB AL,BL SUB AL,DH
SUB AL,DL ;<50分的人数 MOV [DI],BH MOV [DI]+1,BL MOV [DI]+2,DH MOV [DI]+3,DL MOV [DI]+4,AL MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
编写完整的汇编语言程序,实现从键盘输入一串字符,并在屏幕上显示出来。1. 写出编程思想。
2. 编写完整的汇编语言程序。
1. 编程思想
6
用DOS 0AH号功能完成从键盘输入一串字符,用DOS 09H号功能完成屏幕的显示。 2. 完整的汇编语言程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
STRING1 DB ‘DO YOU WANT TO INPUT STRING?(Y/N):$’ CRLF DB 0DH,0AH,’$’
STRING2 DB ‘PLEASE INPUT STRING.’,0DH,0AH,’$’ BUFIN DB 20H DB ?
BUFIN1 DB 20H DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX
LEA DX,STRING1 MOV AH,09H INT 21H
MOV AH,01H INT 21H
CMP AL,’Y’ JE INPUT CMP AL,’y’ JNE DONE INPUT: LEA DX,CRLF MOV AH,09H INT 21H
LEA DX,STRING2 MOV AH,09H INT 21H
LEA DX,BUFIN MOV AH,0AH INT 21H
MOV AL,BUFIN+1 CBW
LEA SI,BUFIN+2 ADD SI,AX
MOV BYTE PTR [SI],’$’ LEA DX,CRLF MOV AH,09H INT 21H
LEA DX,BUFIN+2
7
MOV AH,09H INT 21H
MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
已知有100个8位无符号数已存放在缓存区INX中,编写完整的汇编语言程序,实现对这100个数据由高到低排序。
1。写出编程思想。
2。编写完整的汇编语言程序。
1. 编程思想
利用气泡排序法对这100个8位无符号数两两进行比较,从而完成值的大小从大至小排序。 2. 完整的汇编语言程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
INX DB 100 DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV CH,100-1 B10: LEA SI,INX MOV CL,CH B20: MOV AL ,[SI]
CMP AL ,[SI]+1 JAE B30 XCHG AL, [SI]+1 MOV [SI],AL B30: INC SI
DEC CL JNZ B20 DEC CH
JNZ B10
8
MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
编写完整的汇编语言程序,实现以下功能:
从键盘输入一串字符,将其按ASCII码值的大小从小至大排序,并将排好序的新的字符串输 出到屏幕上显示出来。
1。写出编程思想。
2。编写完整的汇编语言程序。
1. 编程思想
用DOS 0AH号功能完成从键盘输入一串字符,利用气泡排序法对输入的字符串中字符两两进行比较,从而完成按ASCII码值的大小从大至小排序。对排好序的新的字符串,用DOS 09H号功能完成屏幕的显示。 2. 完整的汇编语言程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
STRING1 DB ‘DO YOU WANT TO INPUT STRING?(Y/N):$’ CRLF DB 0DH,0AH,’$’
STRING2 DB ‘PLEASE INPUT STRING.’,0DH,0AH,’$’ BUFIN DB 20H DB ?
BUFIN1 DB 20H DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX
LEA DX,STRING1 MOV AH,09H INT 21H
MOV AH,01H INT 21H
CMP AL,’Y’
9
JE INPUT CMP AL,’y’ JNE DONE INPUT: LEA DX,CRLF MOV AH,09H INT 21H
LEA DX,STRING2 MOV AH,09H INT 21H
B10: B20: B30: DISP: CODE
LEA DX,BUFIN MOV AH,0AH INT 21H
MOV AL,BUFIN+1 CBW
LEA SI,BUFIN+2 ADD SI,AX
MOV BYTE PTR [SI],’$’LEA DX,CRLF MOV AH,09H INT 21H
MOV CH,BUFIN+1 DEC CH
LEA SI,BUFIN+2 MOV CL,CH MOV AL ,[SI]
CMP AL ,[SI]+1 JAE B30 XCHG AL, [SI]+1 MOV [SI],AL INC SI
DEC CL JNZ B20 DEC CH JZ DISP
JMP B10
LEA DX,BUFIN+2 MOV AH,09H INT 21H
MOV AH,4CH INT 21H ENDS
END START 10