《汇编语言程序设计》作业习题
第1章 汇编语言基础知识
习 题
1.1 什么是汇编语言?汇编语言的特点是什么?
1.2 把下列十进制数转换成二进制数、八进制数、十六进制数。 ① 127 ② 1021 ③ 0.875 ④ 6.25 1.3 把下列二进制数转换成十进制数。
① 1001.11 ② 101011.10011 ③ 111.011 ④ 1011.1 1.4 把下列八进制数转换成十进制数。
① 573.06 ② 75.23 ③ 431.7 ④ 123.45 1.5 把下列十六进制数转换成十进制数。
① 0D5.F4 ② 8BA.7C ③ 0B2E.3A ④ 6EC.2D 1.6 把下列英文单词转换成ASCII编码的字符串。
① Upper ② Blow ③ Computer ④ What 1.7 求下列带符号十进制数的8位基2码补码。
① +127 ② ?2 ③ ?128 ④ +2 1.8 求下列带符号十进制数的16位基2码补码。
① +628 ② ?9 ③ ?1234 ④ +3249
1.9 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
①68+(―53) ②68―53 ③68―(―53) ④(―68)―53 1.10 汉字在输入、存储、输出过程中所使用的汉字编码是否一样?使用的是什么编码?
第2章 IBM-PC系统结构
习 题
2.1什么是微型计算机?微型计算机主要由哪几部分组成?其主要功能是什么? 2.2 8086/8088CPU由哪两部分组成?它们的主要功能是什么? 2.3 8086/8088CPU有哪些寄存器?各有什么用途?
2.4 8086/8088CPU哪些寄存器可以用来指示存储器地址?
2.5标志寄存器中有哪些状态标志和控制标志?它们每一位所表示的含义是什么? 2.6有两个16位数3A4BH和10EFH分别存放在2000H和2004H存储单元中,请用图表示出它们在存储器里的存放情况。
2.7一个存储单元的物理地址、段地址、偏移地址三者之间有何关系?
2.8在DEBUG程序中,一条指令语句表示为2000:0030 MOV AL,8。请问:段地址、偏移地址和物理地址分别为多少?存放段地址和偏移地址的寄存器是哪两个?
第3章_80868088寻址方式和指令系统寻址方式和指令系统
习题
一、填空
3.1 指出下列指令源操作数的寻址方式:
MOV AX,ARRAY[SI] ; MOV AX,ES:[BX] ; MOV AX,[100] ; MOV AX,[BX+DI] ; MOV AX,BX ; MOV AX,2000H ; MOV AX,ARRAY[BX][SI] ; MOV AX,[DI+20H] ;
3.2 假设(SP)=100H,(SS)=1000H,执行PUSH BP指令后,栈顶的物理地址是 。
3.3 段地址和偏移地址为3FFFH:1234H,它的物理地址是 ,段地址和偏移地址为1000H:000FH,它的物理地址是 。
3.4 若要测试AL寄存器中操作数的第0,3,4,7位是否均为0,然后根据测试结果实现条件转移,可使用 指令,以产生转移条件。这条指令执行后将影响的标志位是 。
3.5 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,下列指令执行后AX寄存器的内容:
MOV AX,1200H ;(AX)= MOV AX,BX ;(AX)= MOV AX,[1200H] ;(AX)= MOV AX,[BX] ;(AX)= MOV AX,1100H[BX] ;(AX)= MOV AX,[BX][SI] ;(AX)= MOV AX,1100H[BX+SI] ;(AX)= 3.6 设(BX)=101H,(DS)=2100H ,(CS)=1900H,内存中(21101H)=0C7H,(21102H)=0FFH,(21103H)=00H,(21104H)=0F0H,执行如下指令后CS和IP寄存器的值是多少?
JMP BX ;(CS)= ,(IP)= JMP [BX] ;(CS)= ,(IP)= JMP WORD PTR[BX+1] ;(CS)= ,(IP)= JMP DWORD PTR[BX] ;(CS)= ,(IP)= 3.7 试根据以下要求写出相应的汇编语言指令。
⑴把BX寄存器和DX寄存器内容相加,结果存入DX寄存器中,汇编语言指令: ;
⑵用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。汇编语言指令: ;
⑶用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器内容相加,并把结果送回到存储器中。汇编语言指令: ;
⑷用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。汇编语言指令: ;
⑸把数0B5H与AL寄存器内容相加,并把结果送回AL寄存器中。汇编语言指令: ;
3.8 指令SAR可用来 除2,而指令SHR可用来 除2。 3.9 条件转移指令的目标地址应在本条指令的下一条指令的 个字节范围内。
3.10 执行指令XOR AX,AX的含义是 和 。
3.11 一个有16个字的数据区,它的起始地址为70A0H:DDF6H,那么该数据区的最后一个字单元的物理地址为 H。
3.12 串处理指令规定源寄存器使用 ,源串在 段中;目的寄存器使用 ,目的串必须在 段中。
3.13 执行加法指令时,如果两个操作数的符号相同,而结果的符号与之相反,则OF= ;执行减法指令时,如果两个操作数的符号相反,而结果的符号与减数相同,则OF= 。
3.14 数据串传送指令执行前应做 、 、 、 四项准备工作。 二、选择题(可多选)
3.15 基址寄存器的内容、变址寄存器的内容以及指令中指定的位移量三者之和作为操作数的有效地址,它的寻址方式是 。
A、直接寻址方式 B、寄存器相对寻址方式
C、基址变址寻址方式 D、相对基址变址寻址方式
3.16 完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是 。 A、MOV AL,00H B、AND AL,00H C、XOR AL,AL D、SUB AL,AL 3.17 指令TEST AL,02H的含义是 。
A、测试AL是否等于02H B、测试AL第二位的状态
C、测试AL第一位的状态 D、将AL的第一位和02单元的各位进行测试 3.18 8086CPU在执行8位有符号数运算后,产生溢出是结果超出了 。 A、0~255 B、+128~-128 C、+255~-256 D、+127~-128 3.19 不能改变8086程序计数指针IP的指令是 。
A、RET B、PUSH AX C、CALL D、JBE 3.20 不影响8086堆栈指针SP值的指令是 。
A、JMP B、PUSH AX C、POP CX D、INT 21H 3.21 8086中执行指令RET 04H表示 。
A、返回到04H单元 B、作段间返回
C、返回到当前地址后第4个单元 D、完成RET指令后SP加4 3.22 下列不正确的指令是(DATA已定义) 。
A、MOV 4[DI],02H B、MOV BYTE PTR4[DI],02H C、MOV 4[DI],AL D、MOV DATA[DI],02H
3.23 假设V1和V2是用DW定义的变量,下列指令中正确的是 。 A、MOV V1,20H B、MOV V1,V2 C、MOV AL,V1 D、MOV 2000H,V2 3.24 下列哪条指令不合法?
A、INT AX,0278H B、ROR DX,CL C、CMPSB D、RET 4 3.25 下列指令中,有语法错误的是 。
A、MOV [SI],[DI] B、IN AL,DX
C、JMP WPRD PTR[BX] D、PUSH WORD PTR 20[BX+SI-2] 3.26 下列4条指令中, 是错误的。
A、MOV DS,2000H B、ADD DX,[BP] C、MOV AX,200 D、MOV AX,ARRAY[SI+2]
3.27 运算型指令的寻址和转移型指令的寻址,其不同点在于 。 A、前者取操作数,后者决定程序的转移地址 B、后者取操作数,前者决定转移地址 C、两者都是取操作数
D、两者都是决定程序的转移地址
3.28 下列指令中操作数在代码段中的是 。
A、MOV AL,25H B、ADD BH,AL C、INC DS:[25H] D、CMP AL,BL 3.29 设(BL)=5,要使结果(BL)=0AH,应执行指令是 。
A、AND BL,0FH B、NOT BL C、XOR BL,0FH D、OR BL,0FH 3.30 指令JMP DWORD PTR[BX][SI]属于 寻址。
A、寄存器间接寻址 B、相对基址变址寻址 C、段内转移直接寻址 D、段间转移间接寻址 3.31 在下列指令中, 指令的执行会影响条件码的CF位。
A、JMP NEXT B、JC NEXT C、INC BX D、SHL AX,1 3.32 将累加器AX的内容清零的正确指令是 。
A、OR AX,0 B、XOR AX,AX C、TEST AX,AX D、CMP AX,AX 三、简答题
3.33 PUSH和POP指令有什么特点?
3.34 算术移位指令和逻辑移位指令有什么不同?
3.35 串处理指令有什么特殊规定?简述REPZ CMPSB指令的执行过程。 3.36 完成下列操作,选用什么指令?
⑴将AX的内容减去0520H和上次运算的借位;
⑵将变量名TABL的段地址送AX;
3.37 条件转移指令和无条件转移指令有什么不同?
第4章 80868088汇编语言(格式)
习题 一、填空题
4.1 有关操作数的伪指令中,算术运算符有 ,逻辑运算符有 ,关系操作符有 ,数值运算符有 ,属性操作符 。 4.2 下列两个语句的区别在于 , 。
X1 EQU 1000H X2=1000H
4.3 假设 (DS)=3000H
ORG 3100H
TABLE DB 10,3*4,10H ADDRESS DD TABLE
ARRAY DW 2 DUP(675AH,?) 写出下列各单元的内容。
(3100H)= (3101H)= (3102H)= (3103H)= (3104H)= (3105H)= (3106H)= (3107H)= (3108H)= (3109H)= (310AH)= (310BH)= (310CH)= (310DH)= (310EH)= 4.4 对于下面的数据定义,各条MOV指令单独执行后,请写出相关寄存器的内容。
FLDB DB ?
TABLEA DW 20 DUP(?) TABLEB DB 'ABCD'
(1)MOV AX, TYPE FLDB ;(AX)= (2)MOV AX, TYPE TABLEA ;(AX)= (3)MOV CX, LENGTH TABLEA ;(CX)= (4)MOV DX, SIZE TABLEA ;(DX)= (5)MOV CX, LENGTH TABLEB ;(CX)=
4.5 设X1、X2是两个已经赋值的变量,指令AND AX,X1 AND X2中,两个AND的区别是 、 。 4.6 对于指令MOV BX,((X LT 10H) AND 40H)OR ((X GE 10H) AND 50H),当X<10H时,汇编结果为MOV BX, ,否则汇编结果为MOV BX, 。 4.7 数据定义语句
BUF1 DW ? BUF2 EQU BYTE PTR BUF1
当汇编后,PTR类型操作符使BUF2具有与BUF1相同的 和 ,但类型为 。
4.8 是过程定义结束伪指令,与 配套使用。 是段定义结束伪指令,与 配套使用, 是一个源模块汇编结束伪指令。 4.9 已知指令ARRAY DB 2 DUP(1 DUP(?)),则该指令分配 字节单元,指令MOV AX,LENGTH ARRAY执行后,AX= ;指令MOV AX,SIZE ARRAY执行后,AX= 。
4.10 汇编程序产生二进制的目标文件OBJ,但OBJ还必须使用 转换成可直接执行的EXE文件。
4.11 在指令和伪指令中可直接使用“$”表示地址计数器的当前值,ORG伪指令后给定的数值应是一个 。
4.12 DB伪指令以 为单位分配存储;DD伪指令以 为单位分配存储。故如下数据定义:
X DB 4 DUP(2),2 COUNT EQU 10 Y DD COUNT DUP(?)
为变量X分配 个字节存储;为变量Y分配 个字节存储。 4.13 数据段中有以下定义:
ARRAY1 EQU 20H ARRAY2 DW 20H
指出下面两条指令的源操作数寻址方式: MOV AX,ARRAY1 ;寻址方式 MOV AX,ARRAY2 ;寻址方式
4.14 根据下面的指令序列,CX寄存器中的值应该是 。
X1 DW ?AB?
X2 DB 16 DUP(?) CNT EQU $-X1 …
MOV CX,CNT
4.15 假设ES段中有一个字符串′12FG3LM5C′,其名为ARRAY,下面的程序段
CLD LEA DI,ES:ARRAY MOV AL, ′G′ MOV CX,9 REPNE SCASB
执行后CX的值是 二、选择题
4.16表示源程序结束伪操作的格式为 。 A、ENDS[LABEL] B、END[LABEL] C、ENDS D、END 4.17一般地,我们将计算机指令的集合称为 。 A、机器指令 B、伪指令 C、宏指令 D、语句
4.18在汇编语言程序设计中,伪指令OFFSET表达的含义是回送变量或标号的 。 A、段地址值 B、偏移地址值 C、物理地址值 D、操作数 4.19若定义DAT DW ?A?,则DAT和DAT+1两个相邻的内存单元中存放的数据是 。 A、00H41H B、41H00H C、XXH41H D、41HXXH (选项C、D中的XX表示任意数据) 4.20若定义DAT DW ?AB?,则DAT和DAT+1两个相邻的内存单元中存放的数据是 。 A、42H41H B、41H42H C、62H61H D、61H62H 4.21 表示一条指令的存储单元的符号地址称为 。 A、标号 B、变量 C、偏移量 D、类型
4.22 现用数据定义语句定义数据:BUF DB 4 DUP (0,2 DUP(1,0)),定义后存储单元中有数据0100H的字单元个数是 。 A、4 B、3 C、8 D、12 4.23 下列语句中有语法错误的语句是 。 A、DB 45H B、DW 0ABCDH C、DW ?ABCD? D、DD ?AB? 三、判断题
4.24 MOV BYTE PTR[BX],1000 ; 4.25 JMP FAR PTR LAB;LAB是标号 ; 4.25 JLE FAR PTR LAB;LAB是标号 ; 4.27 JMP DWORD PTR[BX+SI] ; 4.28 PUSH OFFSET VAL;VAL是DB定义的变量 ; 4.29 汇编语言程序中,符号地址和标号必须先定义后使用 ; 4.30 在生成的可执行文件中,伪指令是不存在的 ; 4.31 语句X=X-Y执行后按照减法规则影响标志位 ; 4.32 ADD AX,BX与ADC AX,BX得到的结果总是不同 ;