微机原理课后习题答案 下载本文

SUB AL,30H

MUL DH ;相乘

AAM ;分离十位和个位 MOV DH,AL ;暂存个位 MOV DL,AH :显示十位 ADD DL,30H MOV AH,2 INT 21H

MOV DL,DH ;显示个位 ADD DL,30H INT 21H

MOV AH,4CH INT 21H CODE ENDS

END AGAINl

5、编程实现从键盘接收两位十六进制数并将其转化为等值的十进制数显示出来(如输入7CH=124,要求至少设计一个子程序)

自己写

6、编程实现三个变量值的排序(分别用无符号数和有符号数处理)。 答:实现A、B、C三个变量从小到大排序的程序如下。 DATA SEGMENT

A DB l2H B DB 34H C DB 23H DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA

MOV DS,AX MOV AL,A CMP AL,B

JBE NEXTl ;无符号,有符号用JLE XCHG AL,B MOV A,AL NEXTl:CMP AL,C

JBE NEXT2 :无符号,有符号用JLE XCHG AL,C MOV A,AL NEXT2:MOV AL,B

CMP AL,C

JBE NEXT3 ;无符号,有符号用JIE XCHG AL,C MOV B,AL

NEXT3:MOV AH,4CH ;返回DOS

INT 21H CODE ENDS

END START

7、编程实现任意个有符号字节数据之和(和要求用字变量存放)。 答:DATA SEGMENT

A DB …………. ;任意个字节数据 N EQU $-A ;元素个数 SUM DW ? DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA STAR:MOV AX,DATA MOV DS,AX LEA SI,A XOR DX,DX MOV CX,N

AGAIN:MOV AL,[SI】

CBW

ADC DX,AX LOOP AGAIN MOV SUM,DX

MOV AH,4CH :返回DOS INT 21H CODE ENDS

END START

8、编写一个菜单选择处理程序。 自己写

9、编写一子程序实现从某字数组中选出最大值。

答: 求数组元素最大值过程名MAX,数组首址为Sl,元素个数为CX,最大值由AX带出。

MAX PROC NEAR PUSH SI PUSH CX

MOV AX,[S1]

AGAIN:CMP AX,[SI]

JGE NEXT ;有符号数,若为无符号数则JAE MOV AX,[SI] NEXT:INC SI INC SI

LOOP AGAIN POP CX POP SI RET MAX ENDP

10、编写一子程序实现从某字数组中求出平均值(设其和不会超出范围)。 答:;求数组元素之和函数SUM,数组首址为Sl,数组元素个数为CX,和由AX带出。

SUM PROC NEAR PUSH SI PUSH CX

XOR AX,AX AGAIN:ADD AX,[S1]

INC Sl INC SI

LOOP AGAIN POP CX POP Sl RET SUM ENDP

11、从键盘接收一串字符,并另起一行逆序显示该字符串。 答:DATA SEGMENT

BUF DB 81,0,81 DUP(?) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,BUF

MOV AH,l0 ;接收一串字符 INT 2lH

MOV DL,0DH ;显示回车换行 MOV AH,2 INT 21H

MOV DL,0AH MOV AH,2 INT 21H

MOV CL,BUF+1 ;取接收的字符数 XOR CH,CH LEA BX,BUF+1

ADD BX,CX ;BX指向串尾 AGAIN:MOV DL,[BX] ;逆向显示

MOV AH,2 TNT 21H DEC BX

LOOP AGAIN MOV AH,4CH INT 2lH CODE ENDS

END START

12、假设密码为“123456”,从键盘接收密码并验证,若正确则显示“欢迎使用本系统”,否则显示“密码错误,您无权使用!”。 自己写 13、从键盘输入1字节的两位十六进制数据,并分别用二进制、八进制、十进制、十六进制显示出来其等价的值。 自己写