微机原理与接口第二版(陈红卫版)参考答案及复习纲要

INT 21H CODE ENDS

END START (1)程序完成什么功能?

(2)程序中NEG BL指令的作用是什么?

(3)程序执行结束后RESULT字单元的内容是什么?

(4)能否用MOV SI,OFFSET ABC代替程序中LEA SI,ABC指令? (5)汇编结束后符号COUNT的值是什么?

解:(1)程序完成求一组有符号字节数的绝对值之和。 (2)程序中NEG BL指令的作用是求负数的绝对值。 (3)程序执行结束后RESULT字单元的内容是0120H。 (4)能。

(5)汇编结束后符号COUNT的值是06H。

6.阅读以下程序,回答问题 DSEG SEGMENT

ARRAY DB 34H,56H,23H,70H,96H COUNT EQU $-ARRAY

DSEG ENDS

SSEG SEGMENT PARA STACK ‘STACK’

DB 256 DUP(0)

SSEG ENDS CSEG SEGMENT

ASSUME CS:CSEG,DS:DSEG,SS:SSEG

START:MOV AX,DSEG

MOV DS,AX

MOV SI,OFFSET ARRAY MOV CX,COUNT CLD

NEXT: LODSB

MOV BL,AL AND AL,0F0H PUSH CX MOV CL,4 SHR AL,CL

OR AL,30H CALL DISP MOV AL,BL AND AL,0FH OR AL,30H CALL DISP DEC CX JCXZ DONE

MOV AL,2CH ;逗号的ASCII码为2CH

CALL DISP JMP NEXT

DONE:MOV AH,4CH ;终止当前进程,返回调用进程

INT 21H

DISP PROC NEAR

MOV AH,14 ;写字符到当前光标位置,光标前进一格 INT 10H RET

DISP ENDP

CSEG ENDS END START

(1)程序执行结束后,屏幕上显示的内容是什么?

(2)程序中带下划线的指令可以用什么指令替代(仅一条)?

(3)程序中空格处应填入什么指令,才能保证程序按要求正常执行? 解:(1)程序执行结束后,屏幕上显示的内容是34,56,23,70,96。 (2)程序中带下划线的指令可以用LEA SI,ARRAY指令替代。

(3)程序中空格处应填入POP CX指令,才能保证程序按要求正常执行。

7.AX寄存器中存有4位压缩BCD码,试编写程序将这4位数字分开,并分别存入BH、BL、CH和CL寄存器中。

解: 参考程序段如下:

??

MOV DX,AX MOV CL,04H ROL AX,CL AND DX,0F0FH MOV BL,DH MOV CL,DL AND AX,0F0FH MOV BH,AL MOV CH,AH

??

?X/8,(0?X?20)8.已知X、Y是字节型的无符号整数,编写程序计算Y??。

X?15,(20?X?30)?解:参考程序如下:

DATA SEGMENT

X DB ? ;运行程序时取X分别位于两个分支 Y DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX MOV AL,X

CMP AL,20 JNC NEXT

MOV CL,03H SHR AL,CL JMP NEXT1

NEXT:SUB AL,15 NEXT1:MOV Y,AL

MOV AH,4CH

INT 21H

CODE ENDS END START

9.编写程序,统计寄存器BX中二进制位“1”的个数,结果存在AL中。 解:参考程序如下: CODE SEGMENT

ASSUME CS:CODE

START: MOV AL,00H MOV DX,BX MOV CX,16 AA: CMP DX,0 JZ NEXT SHL DX,1

JNC NEXT1 INC AL NEXT1: LOOP AA

NEXT: MOV AH,4CH

INT 21H CODE ENDS END START

10.编写程序段将计算机日期设置为2009年10月1日。 解:参考程序段如下:

MOV CX,2009H ;设置年 MOV DH,10H ;设置月 MOV DL,01H ;设置日 MOV AH,2BH INT 21H HLT

11.编写程序实现接收一个字符的输入,并在屏幕上用二进制形式(0/1)显示出它的ASCII码值。

解:参考程序如下: CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AH,01H ;键盘输入

INT 21H MOV BL,AL

MOV CX,0007H

SHL BL,1 AA:SHL BL,1

JC NEXT1 MOV DL,’0’ JMP NEXT

NEXT1:MOV DL,’1’

NEXT: MOV AH,02H ;显示输出7位ASCII码值

INT 21H

LOOP AA MOV AH,4CH

INT 21H CODE ENDS

END START

12.设数据块存放在BUFFER开始的50个字节单元中,试编写程序统计数据块中正数(不包括0)的个数,并将统计的结果存放到NUMBER单元中。

解:参考程序如下: DATA SEGMENT

BUFFER DB 23H,00H,56H,89H,09H,30H DB 98H,11H,07H,? COUNT EQU $-BUFFER NUMBER DB 00H DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX MOV CX,COUNT LEA SI,BUFFER AA:MOV AL,[SI] CMP AL,00H JZ NEXT JS NEXT

INC NUMBER NEXT:INC SI

LOOP AA

MOV AH,4CH INT 21H CODE ENDS END START

13.内存的一个区域中有100个字符是用小写字母表示的,试编写一个程序,把它们转换成大写字母,并送屏幕显示。 解:参考程序如下:

DATA SEGMENT

联系客服:779662525#qq.com(#替换为@)