JNE ADDR
INC DX ADD SI, 2 LOOP COMP
ADDR: CMP DX, COUNT ;此数出现的次数最多吗? JLE DONE
MOV COUNT, DX ;目前此数出现的次数最多,记下次数 MOV NUM, AX ;记下此数
DONE: LOOP NEXT ;准备取下一个数 MOV CX, COUNT ;出现最多的次数存入(CX) MOV AX, NUM ;出现最多的数存入(AX) RET
MAIN ENDP
CODE ENDS ;以上定义代码段
END START
13. 将键盘上输入的十六进制数转换成十进制数,在屏幕上显示。 答:DATA SEGMENT
STRING DB 'INPUT 4 HEX NUM:',0AH,0DH,'$' NUM DB 10 DUP(?) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
LEA DX,STRING ;显示提示信息 MOV AH,9 INT 21H
MOV BP,4 MOV DX,0
CONT: MOV CL,4 ;输入4 位十六进制数DX SHL DX,CL D1: MOV AH,1 INT 21H CMP AL,'0' JB D1
CMP AL,'F' JA D1 CMP AL,'A' JB A1 SUB AL,7 A1: SUB AL,30H MOV AH,0 ADD DX,AX DEC BP
JNZ CONT
MOV SI,0 ;将DX 转换成十进制数,再转换成ASCII 码—>NUM MOV AX,DX MOV DX,0 MOV BX,10 D2: DIV BX ADD DL,30H MOV NUM[SI],DL INC SI CMP AX,0 JZ EXIT MOV DX,0
JMP D2
EXIT: MOV DL,0AH ;显示十进制数 MOV AH,2 INT 21H MOV DL,0DH INT 21H D3: DEC SI MOV DL,NUM[SI] MOV AH,2 INT 21H JNZ D3
MOV AH,4CH INT 21H
CODE ENDS END START
14. 将AX 中的无符号二进制数转换成ASCII 字符串表示的十进制数。 答:将13 题输入过程和输出过程去掉即得。
DATA SEGMENT
NUM DB 10 DUP(?) ;转换后ASCII 码按倒序存放于NUM DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX, ×××× ;无符号二进制数
MOV SI,0 ;将AX 转换成十进制数,再转换成ASCII 码—>NUM MOV DX,0 MOV BX,10 D2: DIV BX ADD DL,30H
MOV NUM[SI],DL INC SI
CMP AX,0
JZ EXIT MOV DX,0 JMP D2
EXIT: MOV AH,4CH INT 21H CODE ENDS
END START
15. 从键盘输入20 个有符号数,将它们排序并在屏幕上显示。 答:DATA SEGMENT
NUM DW 20 DUP(?) ;存放20 个有符号数
ASC DB 10 DUP(?) ;输出时暂时保存每一个数的ASCII 码 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,20 MOV BX,10 MOV SI,0
MOV BP,0
BEGIN: MOV DX,0 ;输入20 个有符号数(十进制),并 A1: MOV AH,1 ;转化为二进制数存放于NUM 数组 INT 21H
CMP AL,' ' ;判断是否空格 JZ A2
CMP AL,0DH ;是否回车符 JZ A2
CMP AL,'-' ;是否?-? JZ A3 JMP A4
A3: MOV BP,1 JMP A1
A4: PUSH AX MOV AX,DX MUL BX MOV DX,AX POP AX
SUB AL,30H MOV AH,0 ADD DX,AX JMP A1
A2: CMP BP,1 JNZ A5
NEG DX ;若为负数,则取负 A5: MOV NUM[SI],DX MOV BP,0 ADD SI,2 LOOP BEGIN
MOV DL,0DH ;回车换行 MOV AH,2 INT 21H
MOV DL,0AH
INT 21H
MOV BX,0 ;对20 个有符号数按由小到大顺序排序 MOV CX,19 ;采用冒泡法,排序后依然存放于NUM 数组 L1: MOV DX,CX
L2: MOV AX,NUM[BX] CMP AX,NUM[BX+2] JLE CONT1
XCHG AX,NUM[BX+2] MOV NUM[BX],AX CONT1: ADD BX,2 LOOP L2 MOV CX,DX
MOV BX,0 LOOP L1
MOV CX,20 ;将20 个有符号数(二进制)转换为十进制数 MOV SI,0 ;再转换为ASCII 码并输出屏幕 D1: MOV AX,NUM[SI] ADD SI,2 TEST AX,1000H JZ D4 PUSH AX MOV DL,'-' MOV AH,2 INT 21H POP AX NEG AX
D4: MOV DI,0 MOV DX,0 MOV BX,10 D2: DIV BX ADD DL,30H MOV ASC[DI],DL INC DI CMP AX,0 JZ D3
MOV DX,0
JMP D2
D3: MOV DL,ASC[DI-1] MOV AH,2 INT 21H DEC DI JNZ D3 MOV DL,' ' MOV AH,2 INT 21H
LOOP D1
MOV AH,4CH ;返回DOS INT 21H CODE ENDS
END START
16. 编写多字节有符号数的加法程序,从键盘接收两个加数,在屏幕上显示结果。 答:DATA SEGMENT
STRING1 DB 'INPUT FIRST NUM(HEX):',0DH,0AH,'$' STRING2 DB 'INPUT SECOND NUM(HEX):',0DH,0AH,'$' STRING3 DB 'THE RESULT IS(HEX):',0DH,0AH,'$' NUM1 DW 0,0 ;存放加数1 NUM2 DW 0,0 ;存放加数2 RESULT DB 0,0,0,0 ;存放结果 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX
LEA DX,STRING1 ;输入第一个加数(4 位十六进制数) MOV AH,9 INT 21H MOV SI,2 MOV CX,8
CONT: PUSH CX CMP CX,4 JNZ B1 SUB SI,2
B1: MOV CL,4 SHL NUM1[SI],CL C1: MOV AH,1 INT 21H CMP AL,'0' JB C1
CMP AL,'F'
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库微机原理课后题目答案(6)在线全文阅读。
相关推荐: