admin 管理员组文章数量: 1184232
2024年12月23日发(作者:oracle19c彻底卸载并重装)
《汇编语言程序设计》作业习题
第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得到的结果总是不同 ;
4.33 JNZ AAA
;
第5章 基本程序设计
习题
5.1 简述编制一个汇编语言程序的步骤。
5.2 简述判断汇编语言程序质量的标准。
5.3 编写程序,将DATA_NUM起的4个压缩BCD码转换成十六进制数,并存放在
DATA_NUM下面相邻字节中。
5.4 试编写一程序,用查表法将一位十六进制数转换成与之对应的ASCII码。程序的数据
段如下:
DATA SEGMENT
TAB DB 30H, 31H, 32H, 33H, 34H, 35H, 36H, 37H
DB 38H, 39H, 41H, 42H, 43H, 44H, 45H, 46H
HEX DB 6
ASC DB ?
DATA ENDS
5.5 试编程求解表达式S=(23000-(X*Y+Z))/Z,其中X=600,Y=25,Z=-2000。
第5章 输入输出程序设计
习题
6.1 用指令实现如下功能:
(1) 将一个字节输出到端口43H。
(2) 将一个字节从48H端口输入。
(3) 将一个在BUF单元的字节输出到端口2F0H。
(4) 将一个字节从端口30H输入,存到内存ABC单元。
(5) 将一个字从020FH单元输出。
6.2 中断处理程序的典型结构包括哪几部分?
6.3 增加一个新的软中断,应完成哪些操作?
6.4 CPU与外设问的数据传送方式有哪几种?它们各有什么特点?
6.5 类型号1DH的中断向量在存储器的哪些单元里?
6.6 内存单元INT9开始放有一个中断服务程序,它所对应的中断类型号为9。试编写
建立这一中断向量的程序段。
6.7根据本章讲述的内容,试分析下面一段程序实现的功能。
MOV AX, 0
MOV ES, AX
MOV DI,36H*4
MOV AX,OFFSET INTBUF
STOSW
MOV AX,CS
STOSW
第6章 80868088循环程序设计
习题
一、填空
7.1 下列程序完成的是将16位二进制数转换成4位16进制数的ASCII码,请完善程序。
DATA SEGMENT
X DW 1234H
CHAR DB 4 DUP(0)
DATA ENDS
„
LEA DI,CHAR
MOV CH,4
MOV BX,X
L1:
MOV CL,4
MOV AL,BL
AND AL,0FH
CMP AL,9
ADD AL,7
L2:
ADD AL,30H
MOV [DI],AL
INC DI
DEC CH
HLT
7.2 以ARRAY为起始地址的字节表中存放着M个带符号数,找出其中的最大值和最小值,并
分别送入到AH和AL中,请完善下列程序段。
„
MOV SI,OFFSET ARRAY
MOV CX,M
CLD
MOV BH,[SI]
MOV BL,BH
L1:
CMP AL,BH
JLE L2
MOV BH,AL
L2:
CMP AL,BL
JGE L3
MOV BL,AL
L3:
MOV AX,BX
HLT
7.3 阅读下列程序段,并完善程序和回答问题。
XOR AX,AX
MOV BX,1
LOP:
ADD AX,BX
INC BX
INC BX
LOOP LOP
HLT
程序执行到HLT时,(AX)= ,(BX)= 。
A、9 B、10 C、11 D、20 E、25 F、36
7.4 以STR1为起始地址的字节存储单元中存放着一个字符串,请统计该字符串中的每个字
符含有“1”的个数,并将结果保存到以STR2为起始地址的个字节存储单元中。请完善程序。
STR1 DB 'FABCDFGHYTRJHKL9'
M EQU $-STR1
STR2 DB M DUP(0)
„
LEA SI,STR1
LEA DI,STR2
MOV CX,M
L1:
MOV AL,[SI]
MOV DL,0
L2:
CMP AL,0
SHR AL,1
JNC L3
L3:
JMP L2
L4:
MOV [DI],DL
INC SI
INC DI
HLT
二、编程题
7.5 试编制一程序,要求从键盘上接收一个4位的16进制数,并在屏幕上显示与它等值的
二进制数。
7.6 试编制一程序,将一个包含有20个字数据的数组ARRAY分成两个数组,正数数组M和
负数数组N。
7.7 试编制一程序,求出首地址为DATA的100个字数组中的最小偶数,并将它存放在BX中。
7.8 将30名学生的成绩存入以GRADE为首地址的字节数组中。另一个数组RANK为30名学
生的名次表。编写一程序,根据GRADE中的学生成绩,将学生的名次填入RANK数组中。
7.9 已知数组A包含15个互不相等的整数,数组B中包含20个互不相等的整数。试编一程
序,将即在A中又在B中的整数存入数组C中。
7.10 从键盘输入一系列字符串(以回车符结束),按字母、数字和其它字符分类计数,最后
显示出这三类的计数结果。
第7章8086、8088循环分支设计
习题
一、填空题
8.1 下面的程序是将10个8位的无符号数按递减次序排序。请选择正确的答案将程序
填充完整。
DATA SEGMENT
ARRAY DB 05H,78H,0FFH,7BH,00H
DB 8CH,20H,54H,7DH,19H
N DB 9
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
START:
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LAB1:
LEA SI,ARRAY
MOV BL,0
MOV CX,N
AGAIN:
MOV AL,[SI]
INC SI
CMP AL,[SI]
(1)
MOV AH,[SI]
MOV [SI],AL
MOV [SI-1],AH
MOV BL,1
LAB2:
LOOP AGAIN
(2)
DEC BL
(3)
RET
MAIN ENDP
CODE ENDS
END START
8.2 阅读下列程序段,并完善程序和回答问题。
MOV CX,10
XOR AX,AX
MOV BX,1
LOP:
ADD AX,BX
INC BX
INC BX
LOOP LOP
HLT
程序执行到HLT时,(AX)= ,(BX)= 。
8.3 以下程序用于计算符号函数。
1 (X<0)
的取值范围为-128~+127。请完善下列程序。
Y= 0 (X=0)
-1 (X>0)
┇
MOV AL,X
CMP AL,0
JZ EXIT
MOV AL,1
NEG1:
MOV AL,0FFH
EXIT:
MOV Y,AL
二、简答题
8.4为什么说循环结构是分支结构的特例?
8.5程序的基本逻辑结构有哪5种?
三、编程题
8.6 将3个连续存放的单字节无符号数按递增次序重新存放在原存放位置。
8.7 根据键盘输入的字符′A′~′E′(或′a′~′e′),分别显示′ONE′,′
TWO′、′THREE′,′FOUR′、′FIVE′,当输入其它字符时,显示′ERROR′,然后
重新输入。
8.8 试编制一程序,求出首地址为ARY的100个字数组中的最小偶数和最大奇数,并分
别存放在BUF1和BUF2中。
8.9 已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数,试编制
一程序将即在A中又在B中出现的整数存放到数组C中。
第9章 子程序设计
习题
9.1 定义子程序时如何确定其属性?
9.2 已知:(CS)=0B9EH,(IP)=0100H,(BX)=0126H,子程序SUBA位于当前段,其偏移
地址为200H,子程序SUBB所在段的段地址为2C60H,其偏移地址为300H。求以下子程序调
用指令转移的物理地址。
(1)CALL BX
(2)CALL NEAR PTR SUBA
(3)CALL FAR PTR SUBB
9.3 已知堆栈指针寄存器SP的内容是0040H。请画出下列每次调用和返回时堆栈和SP
内容的变化过程。
(1)主程序MAIN段内调用SUBA子程序,返回的偏移地址为0030H。
(2)子程序SUBA段间调用SUBB子程序,返回的段地址为1000H,返回的偏移地址为
0200H。
(3)从SUBB返回SUBA。
(4)子程序SUBA段内调用SUBC子程序,返回的偏移地址为00B0H。
(5)从SUBC返回SUBA。
(6)从SUBA返回MAIN。
9.4 主程序和子程序之间的参数传递是如何实现的?
9.5 编写一个子程序,计算无符号字数组的累加和。无符号字数组存放在首地址为
ARRAY的单元中,长度存放在COUNT单元中,和存放于SUM单元中。假设和小于65536。
9.6 编写一个子程序,把首地址为SRC的数据区存放的50个字数据传送到以DST为首
地址的缓冲区去。
9.7 试分析例9.5程序执行时堆栈的变化过程?
9.8 在以GRADE为首地址的数组中存放着某班某门课30个学生的成绩。试编写三个子
程序分别实现:
(1)统计该班这门课的总分。
(2)求该班这门课的平均成绩。
(3)统计小于60分,60~89分和大于等于90分的学生人数。
9.9 什么情况需要使用PUBLIC和EXTRN伪指令?试将9.8中的子程序改写成子程序模
块。
第10章 数据运算程序设计
习题
10.1 自0500H单元开始,有10个无符号字节数,编一个程序段求这10个数的和(用
位数运算指令),把和放到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)
x1
y
x
2
x1
x<-1
x<-1
-1≤x<4
-1≤x<4
X≥4 (x为使用四伪指令定义的字节有符号数
x≥4
(x为使用EQU
u
伪指令定义的字节有符号数)
)
其中,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。
版权声明:本文标题:《汇编语言程序设计》作业习题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1734980326a1617742.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论