《汇编语言程序设计》作业习题

更新时间:2024-03-03 09:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《汇编语言程序设计》作业习题

第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得到的结果总是不同 ;

位数运算指令),把和放到050AH及050BH单元中(和用两个字节表示),且高字节在050BH单元。

10.2 在0100H单元和010AH单元开始,存放两个各位10个字节的BCD数(地址最低处存放的是最低字节),编一个程序段求它们的和,且把和放在0200H开始的存储单元中。

10.3 在0100H单元开始放有数A(低位在前) NA=67 26 79 21 09 73 85 39 47 15 在010AH单元开始放有数B

NB=53 53 90 19 82 30 22 71 40 92

编一个程序段求两数之差,且把差值送入自0100H开始的存储区。

10.4 给定数N,0<N≤5,要求写一个程序段计算出它的阶乘并将结果保存在存储器地址result处。(N!=1×2×3×?×N)

10.5 在数组ARRAY处存放着N个无符号字节数,要求写一个程序段求数组中前N个字节数的总和并保存在AX寄存器中。如果总和值超过 AX寄存器的容量,则置AX寄存器内容不变。

10.6 在MEM数据区中存放有一组无符号数据,该数组中的每个数均是4位十进制数(组合的BCD码),存放在两个字节中,请编程完成每个数据对应位按二进制数相加,结果分别存放在X1、X2、X3、X4各字节单元中。

10.7 设X,Y,R,S,Z均为16位无符号数据的单元符号地址。编一程序段求表达式:Z=(X+Y)/(R-S)的值。

10.8 设X,Y,R,S,Z均为16位无符号数据的单元符号地址,N为一个立即数。编一程序段求表达式:Z=((X-(Y*R+S-N))/Y的值。

10.9 请编程完成两个无符号数的相乘,但采用重复相加的方法实现。

10.10 请编程利用除法指令实现2个无符号数相除:即一个64位数除以一个16位数(N1/N2,商为N3,余数为N4)。

第11章 高级汇编语言技术 习题

11.1 设有以下宏定义 FUN MACKO Vl,V2

LOCAL NEGA,ZERO,OK PUSH AX MOV AL,V1 CMP AL,0 JS NEGA JZ ZERO MOV AL,1 JMP OK NEGA:

MOV AL,0FFH JMP OK ZERO:

MOV AL,0 OK:

MOV V2,AL POP AX ENDM

若在源程序中进行了两次调用 ……

FUN B_D1,B_D2 ……

FUN B_D3,B_D4

……

试写出后一次宏调用对应的宏扩展。

11.2 试用IRP及IRPC伪指令的重复汇编结构实现【例11.11】中程序段的功能。 11.3 设源程序中有6个近标号,分别为BR0,BRl,?,BR5。试用重复汇编结构定义一个由这6个标号构成的跳转表。

11.4 定义一个宏指令,用以对1~3个有符号字节变量求取最小值。要求对不同的变量个数产生不同的宏扩展。

11.5 定义一个宏指令FUNC,用于下列分段函数的计算。所作宏定义要保证宏调用时能根据自变量的不同取值范围作不同的宏扩展,以减少目标代码。

第12章 BIOS和DOS中断调用 习题

12.1 分别利用DOS和BIOS中断功能调用,将当前的时间和日期设置为2008年8月8日20:08:00。

12.2分别利用DOS和BIOS中断功能调用,显示机器当前时间。

12.3 利用BIOS中断功能调用从键盘上输入字符,然后送显示器显示,并送打印机打印输出,如果输入字符是!,则退出程序。

12.4 编制一程序,要求在屏幕上显示一个直角三角形,三边分别为红、黄、绿三种颜色。

12.5 编写利用8253驱动发声的通用发声子程序。 12.6 编写出实现下列要求的指令序列: (1) 设置屏幕为80×25文本显示方式。 (2) 设置屏幕为蓝底红字。

(3) 把光标定位在屏幕的中央(假设是80X25黑白文本显示)。 (4) 设置屏幕为320×200图形显示方式并清屏。

第13章 混合编程 习题

13.1设C程序在小模式下调用ADD_NUM(x,y,z)汇编子程序,采用堆栈传递参数,请画出堆栈传递参数的示意图。

13.2.汇编子程序中有一外部变量var1供C程序引用,分别写出在汇编程序和C程序中对此变量说明的语句。

13.3有如下C语言声明的外部子程序compare ( )完成字符串的比较功能,请编写汇编程序实现compare ( )的功能,在小模式(SMALL)下连接。

extern int compare(char *str1,char * str2); 其中str1和str2是两个字符串,串结束标志为“\\0”,从串首开始比较,如果str1>str2则返回值为1;如果str1和str2相同则返回值0;如果str1<str2则返回值为-1。

13.4回文是一种特殊的字符串,其特点是从头到尾读和从尾向头读的顺序完全相同,如“12321”,“abcdcba”。编写汇编程序实现供C语言程序调用的外部子程序ishuiwen(),其功能是判断给定字符串是否回文,如果是回文,则返回值为1;否则为0。在中模式下连接,其c语言声明如下:

extern int ishuiwen(char *str); 其中,str是字符串的起始地址。

13.5用汇编语言实现供C语言程序调用的画线子程序drawline( ),其C语言声明如下: extern void drawline(int xl,int yl,int x2,int y2,int color)

?x?1?y??x2?x?1?x<-1 x<-1 -1≤x<4 -1≤x<4 X≥4 (x为使用四伪指令定义的字节有符号数x≥4 (x为使用EQUu伪指令定义的字节有符号数) )

其中,xl,yl是线条起点坐标,x2,y2是终点坐标,color是线条额色。

第14章 286/386/486Pentium汇编语言简介 习题

14.1 说明8086到Pentium各微处理器的寻址空间。

14.2 解释实模式、保护模式和虚拟8086模式,并简述它们各自的特点。 14.3 简要叙述在保护模式下,程序中的存储器地址转换成物理地址的过程。

14.4 设(EAX)=398754A6H,(EDX)=5A8B7600H.试以移位次数为7,15,31,分别执行SHRD和SHLD指令后,EAX和EDX中的值。

14.5 在.486模式下,用RETN、RETF指令编写64位数相加、相减的子程序。 14.6 回答下列问题:

(1)ADD ECX,AX指令错在哪里? (2)JECXZ指令什么条件下转移? (3)MOV AX,[EBX+CX]指令正确吗? (4)如何让汇编程序识别80386指令?

第15章 ARM CPU概述 习题

15.1试说明ARM7TMDI中T、M、D、I的含义是什么? 15.2试叙述RISC与CISC相比有何特点? 15.3试叙述ARM体系结构的优点。 第16章 ARM系统结构. 习题

16.1 ARM处理器的工作状态有几种?如何在不同的状态间进行切换? 16.2 ARM处理器的工作模式有哪几种? 16.3 说明寄存器R14的作用。

16.4简述ARM处理器对异常中断的响应过程。

16.5比较ARM体系结构存储字数据使用大端格式和小端格式的不同点。

第17章 ARM-Thumb汇编语言(格式) 习题

17.1 ARM指令分为哪几类?

17.2 ARM指令基本语法格式中包括哪几部分,各部分的含义是什么?

17.3 ARM指令的寻址方式有几种?试分别叙述其各自的特点并举例说明。 17.4 ARM汇编程序中对字符的使用有哪些要求?

第18章 ARM指令系统 习题 18.1 比较ARM指令系统与8086/8088指令系统的不同,总结ARM指令系统的特点。 18.2 若R0的内容为0x8000,寄存器R1、R2内容分别为0x01、0x10,存储器内容为空。执

行下述指令后,说明程序指针寄存器PC以及寄存器R0、R1、R2和存储器变化情况。

STMIB R0!,{R1,R2} LDMIA R0!,{R1,R2}

18.3 ARM指令系统中的跳转指令与8086/8088指令系统中的跳转指令有何区别? 18.4 用ARM跳转指令实现两段程序间的来回切换。 18.5 用ARM汇编语言编写1+2+3+…+100的程序。

第19章 Thumb指令系统 习题 19.1 简述Thumb指令系统的特点。 19.2 如何用指令实现ARM处理器Thumb状态的进入和退出? 19.3 比较ARM指令系统与Thumb指令系统的异同。 19.4 分别说明ARM指令系统和Thumb指令系统是如何实现移位操作的?

第20章 ARM汇编程序设计 习题

20.1 使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10,则使用STR指令把结果写回原地址;若结果大于或等于10,则把0写回原地址。

20.2 使用Thumb指令ADD、MOV、CMP和B实现1+2+3+?+N的运算(N为0时,结果为0;N为1时,结果为1)。

20.3 在C程序调用汇编子程序,实现两个整数的加法运算。汇编子程序的原型为: Uint add(uint32 x,uint32 y),其中uint32已定义为unsigned int。

本文来源:https://www.bwwdw.com/article/gsva.html

Top