微机原理第四章练习题及解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理第四章练习题及解
一:单项选择题
●汇编源程序文件的扩展名是( C )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE
●源程序文件汇编后的目标文件的扩展名是( B )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE
●目标文件连接后的可执行文件的扩展名是( D )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE
●下列可作为标识符用的字符串是( C )。
A:MOV B:ZF C:FAH D:PTR
●下列为寄存器名的字符串是( B )。
A:ZP B:BP C:AP D:CP
●下列为状态标志的字符串是( A )。
A:ZP B:BF C:DF D:TF
●下列为控标志的字符串是( D )。
A:ZP B:SF C:OF D:TF
●下列为指令助记符的字符串是( C )。
A:ADCC B:AAAA C:SUB D:POOP
●下列为运算符的字符串是( B )。
A:ADC B:PTR C:OAG D:LOOP
●定义字类型的伪指令符是( B )。
A:DB B:DW C:DD D:DQ
●说明字节类型的伪指令符是( C )。
A:WORD B:DWORD C:BYTE D:SHOR
●返回变量段属性的伪指令符是( B )。
A:OFFSET B:SEG C:TYPE D:SIZE
●定义过程结束的伪指令符是( C )。
A:END B:ENDS C:ENDP D:ENDM
●下列为段定义的伪指令是( B )。
A:PROC B:SEGMENT C:ASSUME D:STRUC
●下列为符号定义的伪指令是( B )。
A:ORG B:EQU C:STR D:RET
二:填空题
●将指令助记符翻译为指令机器码的过程称为(汇编)。
●汇编程序的功能是输入扩展名为ASM的(汇编源程序)文件,输出扩展名为OBJ
的(目标代码)文件和扩展名为LST的(列表)文件。
●汇编源程序中的保留字类型有(寄存器名)、(标志名)、(指令助记符)、
(伪指令符)和(运算符)。
●汇编源程序中,FAH是(变量);0FAH是(常量)。
●汇编源程序中,ABC和abc 是意义(相同)的标识符。
●汇编源程序中,(指令)前的标号应加冒号;(伪指令)前的标号不加冒号。
●汇编源程序经汇编后,(指令助记符)将翻译为机器码;(伪指令符)将不会
翻译为机器码。
●变量具有(段基址)属性、(偏移量地址)属性和(数据类型)属性。
●汇编源程序中,BUF + 4是(表达式);[BX + 4] 是(寻址方式)。
●段定义伪指令是( SEGMENT );段说明伪指令是( ASSUME )。
●过程定义伪指令是( PROC );宏定义伪指令是( MACRO )。
●ENDS是(段)定义结束伪指令;ENDP是(过程)定义结束伪指令;
ENDM是(宏)定义结束伪指令。
●宏调用在(源程序汇编)时完成;过程调用在(执行程序执行)时完成。
●要返回符号地址的段基址属性应使用( SEG )运算符;要返回符号地址的段内
偏移地址属性应使用( OFFSET )运算符;要返回符号地址的数据类型属性应使用( TYPE )运算符。
●定义字节类型变量的伪指令是( DB );定义字类型变量的伪指令是( DW )。
●说明字节类型的伪指令是( BYTE );说明字类型的伪指令是( WORD )。
●执行顺序程序语句时,指令指针IP的值会(自动加1 );执行条程序语句时,指令
指针IP的值根据条件而(跳变)。
●在先循环后判断的循环结构中,一般判断( CX )寄存器中的值是否为0。
●执行指令MOV AL,80H+90H后,(AL)=( 10H )、CF = ( 0 )。
●执行指令MOV AL,NOT 0FFH后,(AL)=( 00H )。
●执行指令MOV AL,2 LT 5后,(AL)=( FFH )。
●与指令MOV AL,LOW BX功能相同的指令是( MOV AL,BL )。
●若BUF为字节类型变量,完成指令MOV AX,( WORD )PTR BUF。
●指令 AND AL,BL OR 0FFH中,( AND )是指令助记符;( OR )是运算
符;( BL OR 0FFH )是表达式。
●伪指令END的功能是(结束汇编)。
●伪指令ENDS的功能是(结束段定义)。
●伪指令ENDP的功能是(结束过程定义)。
●伪指令ENDM的功能是(结束宏定义)。
●指令 MUL BYTE PTR[BX]中,( MUL )是指令助记符;( BYTE )是伪指
令;( PTR )是运算符;( BYTE PTR[BX] )是表达式。
●调用过程时,入口参数和出口参数传递的方法有,通过(寄存器)传递参数;通
过(存储器)传递参数;通过(堆栈)传递参数。
●21H的DOS功能调用的应用过程为,将功能号送寄存器( AH );取入口参数;执
行( INT 21H )指令;获得出口参数。
●INT 21H中断的功能号为01H,它的出口参数送寄存器( AL )。
●INT 21H中断的功能号为02H,它的入口参数送寄存器( DL )。
三:判断题
●汇编语言源程序文件的扩展名是ASM(√)。
●伪指令符经汇编将翻译为指令机器码(√)。
●伪指令符经汇编将翻译为指令机器码(×)。
●符号AAA是指令助记符(√)。
●符号BBB是指令助记符(×)。
●符号ORG是伪指令符(√)。
●变量有数据类型属性、段属性和偏移量属性(√)。
●BUF+4是表达式;[BX+4] 也是表达式(×)。
●伪指令EQU和伪指令=的功能完全一样(×)。
●表达式OFFSET BUF将返回变量BUF的段首地址(×)。
●执行指令MOV AL,80H+90H后,标志位CF = 1(×)。
●符号FAH是变量;符号0FAH是常量(√)。
●指令MOV AL,BL和指令MOV AL,LOW BX的功能一样(√)。
●符号$和符号=都是运算符(×)。
●符号AND是指令助记符也是运算符(√)。
●段定义伪指令是SEGMENT;段结束定义伪指令是ENDS(√)。
●过程定义伪指令是PROC;过程结束定义伪指令是ENDS(×)。
●过程调用和宏调用都发生在程序运行时(×)。
●伪指令END、ENDS、ENDP和ENDM的功能完全一样(×)。
四:简答题
●汇编语言程序的设计过程?
【解】:汇编语言源程序的编辑,产生扩展名为ASM的ASCII码文件;汇编源程序的汇编,产生扩展名为OBJ的浮动目标代码文件;目标代码文件的连接,产生扩展名为EXE 的可执行文件。
●指令、伪指令、标识符在汇编语言中的作用?
【解】:汇编语言源程序设计中,用指令助记符表示指令机器码;用符号地址表示存储器真实地址;用伪指令管理整个源程序。
源程序经汇编后,指令助记符被翻译为指令机器码;符号地址用真实地址替换;而伪指令无任何翻译结果。
●伪指令END、ENDS、ENDP、ENDM的作用?
【解】:END为汇编源程序结束伪指令,出现在源程序的最后一行;ENDS为段(结构)定义结束伪指令,出现在定义段的最后一行;ENDP为过程定义结束伪指令,出现在过程定义的最后一行;ENDM为宏定义结束伪指令,出现在宏定义的最后一行。
●在数据段中定义的地址变量的属性?
【解】:地址变量具有三个属性,即变量的段属性;变量的段内偏移量属性;变量的类型属性。
●过程调用和宏调用的特点?
【解】:过程调用发生在程序的执行过程中,由于重复调用可节省指令机器码的存放空间,由于调用时需保护现场调用后需恢复现场会将耗费较多的时间,即过程调用省空费时;宏调用发生在源程序的汇编过程中,由于重复考贝会占用较多指令机器码的存放空间,由于执行程序时宏调用无现场保护和恢复将不会耗费更多的时间,即宏调用省时费空。
●伪指令DB和BYTE的使用特点?
【解】:DB为字节数据类型定义伪指令,用于在数据段中定义地址变量的数据类型;BYTE 为字节数据类型的说明伪指令,用于在代码段中对指令操作数进行数据类型说明。
五:编程题
●已知在ARRA Y数组中有100个带符号字节数据,编写一个完整的8086汇编语言程序,
统计出ARRA Y数组数据中的正、负数的个数并存入NP、NN单元中。
解: DATA SEGMENT
ARRAY DB 100DUP(?)
NP DB ?
NN DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA BX,ARRAY
MOV CX,80
MOV DH, 0 ; 存放正数个数
MOV DL, 0 ; 存放负数个数
AG: MOV AL,[BX]
TEST AL, 80H
JZ GONP
INC DL
JMP NEXT
GONP: INC DH
NEXT: INC BX
DEC CX
JNZ AG
MOV NP, DH
MOV NN, DL
RET
MAIN ENDP
CODE ENDS
END MAIN
已知在ARRA Y数组中有100个无符号字节数据,编写一个完整的8086汇编语言程序,统计出ARRA Y数组数据中的奇、偶数的个数并存入NP、NN单元中。
解: DATA SEGMENT
ARRAY DB 100DUP(?)
NP DB ?
NN DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA BX,ARRAY
MOV CX,80
MOV DH, 0 ; 存放奇数个数
MOV DL, 0 ; 存放偶数个数
AG: MOV AL,[BX]
TEST AL, 01H
JNZ GONP
INC DL
JMP NEXT
GONP: INC DH
NEXT: INC BX
DEC CX
JNZ AG
MOV NP, DH
MOV NN, DL
RET
MAIN ENDP
CODE ENDS
END MAIN
已知有一个4K字节的数据块,存放在以3DA0H:1000H开始的存储区域内,要求编写一个完整的8086汇编语言源程序,将该数据块搬至3DA0H:1008H开始的存储区内。
解: DATA SEGMENT AT 3DA0H
ORG 1000H
A VR1 D
B 4096 DUP(?)
ORG 1008H
A VR2 D
B 4096 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX, 0
MOV AX, DATA
MOV DS, AX
LEA SI, A VR1
LEA DI, A VR2
MOV CX, 100
ADD SI, 4095
ADD DI, 4095
AG: MOV AL, [SI]
MOV [DI], AL
DEC SI
DEC DI
DEC CX
JNZ AG
RET
MAIN ENDP
CODE ENDS
END MAIN
已知一个长度为100个字节的数据块存放在2000H:1000H开始的地址中,现要将该数据块移动到2000H:1010H开始的地址中,用串传送指令编写完整的汇编语言源程序。
解: DATA SEGMENT AT 2000H
ORG 1000H
A VR1 D
B 100 DUP(?)
ORG 1010H
A VR2 D
B 100 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, ES:DATA
MAIN PROC FAR
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATA
MOV DS, AX
MOV ES, AX
LEA SI, A VR1
LEA DI, A VR2
MOV CX, 100
ADD DI, 99
STD ; DF = 1
REP MOVSB
RET
MAIN ENDP
CODE ENDS
END MAIN
●已知数据段有100个无符号字节数据块BUF , 编写一个完整的8086汇编语言程序,
将BUF中的最小数放放入MIN 单元中。
解: DATA SEGMENT
BUF DB 100DUP(?)
MIN DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA BX,BUF
MOV CX,100
MOV AL,[BX]
AG:INC BX
CMP AL,[BX]
JBE GOON
MOV AL,[BX]
GOON:DEC CX
JNZ AG
MOV MIN,AL
RET
MAIN ENDP
CODE ENDS
END MAIN
●已知在ARRA Y数组中有80个无符号字数据,编写一个完整的8086汇编语言程序,
将ARRAY数组中的最大值放入MAX单元中。
解: DATA SEGMENT
ARRAY DW 80DUP(?)
MAX DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA BX,ARRA Y
MOV CX,80
MOV AX,[BX]
AG: INC BX
INC BX
CMP AX,[BX]
JAE GOON
MOV AX,[BX]
GOON:DEC CX
JNZ AG
MOV MAX,AX
RET
MAIN ENDP
CODE ENDS
END MAIN
有字符串”WELCOME TO YOU”, 编写完整程序统计串中字符O出现的次数, 并将次数存入NUM单元中
解: DATA SEGMENT
ARRAY DB ‘WELCOME TO YOU ‘
COUNT EQU $ - ARRA Y
NUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA BX,ARRA Y
MOV CX,COUNT
MOV AH, 0
AG: MOV AL, [BX]
CMP AL, ‘O’
JNZ NEXT
INC AH
NEXT: INC BX
DEC CX
JNZ AG
MOV NUM, AH
RET
MAIN ENDP
CODE ENDS
END MAIN
编写程序段, 应用查询方式从键盘输入字符串(字符串的结束符为0DH), 并将输入的字符串放在ARRA Y开始的数据段中, 该I/O接口的数据端口地址为20H, 状态端口的地址为21H, 状态位定义在b5位, 为1时状态正确
解: LEA BX, ARRA Y
POLL: IN AL, 21H
TEST AL, 00100000B
JE POLL
AG: IN AL, 20H
MOV [BX], AL
CMP AL, 0DH
JE EXIT
INC BX
JMP AG
EXIT: RET。