资源描述
第一章 基础知识
习题
1.十六进制数88H,可表示成下面几种形式,请找出错误的表示( )。
① 无符号十进制数136 ② 带符号十进制数-120
③ 压缩型BCD码十进制数88 ④ 8位二进制数-8的补码表示
2.十进制数转换为二进制数、八进制数、十六进制数
① 123 ② 87 ③ 12.25 ④ 177 ⑤ 215.125 ⑥ 113
3.十进制数转换为BCD码
① 111 ② 131 ③ 23.44 ④ 123 ⑤ 345 ⑥ 127.36
4.完成下列十六进制数的减法
① FFFF- AAAA= ②12DF – 02DA =
5.写出下列二进制数的补码表示:
① -1001110 ② -1001010 ③ -0010110 ④ +10101011
6.16位的二进制补码数所能表示的十进制最大数和最小数分别是什么? 16位二进制数所能表示的无符号数的范围又是多大?
7.假设两个二进制数A=0110l010,B=l0001100,试比较它们的大小
① A、B两数均为带符号的补码数。
② A、B两数均为无符号数。
第二章 80x86计算机组织
1. 一台微型计算机的字长为16位,如果采用字节编址,那么它可以访问的最大存储空间是多少字节?试用16进制数表示该机的地址范围.。
2. PC机有哪两种主要的存储器?它们所起的主要作用是什么?
3. 有两个16位字lEF5和2A3c分别存放在PC机存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。
4. 写出下列存储器地址的段地址、偏移地址和物理地址。
(1)2314:0035 (2)1FD0:000A
5.如果在一个程序段开始执行之前,(CS)=0A7F0H,(EP)=2D40H,试问该程序段的第一个字的物理地址是什么?
6.如果一个堆栈从地址1250:0000开始SP的内容为0052H, 问:
(1)栈顶地址是什么?
(2)栈底地址是什么?
(3)在SS中的段地址是什么?
(4)存入数据3445H后,SP的内容是多少?
第三章 80x86的指令系统和寻址方式
1.假定(DS)=212AH,(CS)=0200H,(IP)=2BC0H,(BX)=1200H
D=5119H,(224A 0)=0600H、(275B9)=098AH,试确定JMP指令的转移地址。
(3)段内直接寻址。
(2)使用Bx及寄布器寻址方式的段内间接寻址。
(3)使用Dx及寄存器相对寻址方式的段内间接寻址。
2. 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00AOH,(BX)=0100H,
(BP)=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么?寻址方式?它的物理地址是多少?
(1) MOV AX,0A8H (2) MOV AX,BX (3) MOV Ax,[100H]
(4)MOV AX,VAL (5) MOV AX,[BX] (6)MOV AX,ES:[BX]
(7)MOV AX,[BP] (8)MOV AX,[SI] (9)MOV Ax,[BX十10]
(10)MOV Ax,VAL[BX] (11)MOV Ax,[BX][SI](12)MOV AX,VAL[BX][SI]
3.设有关寄存器及存储单元的内容如下(DS)=2000H,(BX)=0』00H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(22203)=4CH,(22202)=0B7H,(21203)=65H,试说明下
列各条指令执行完后AX寄存器的内容。
(1)MOV AX,1200H (2)MOV AX,[BX] (3)MOV AX,[1200H]
(4)MOV AX,[BX] (5)MOV AX,1100[BX] (6)MOV AX,[BX][SI]
(7)MOV AX,l100[BX][SI]
4.下面有四条等值语句,
C1 EQU 1000
C2 EQU 1
C3 EQU 20000
C4 EQU 25000
下列指令哪些是不对的?请说明原因。
(1) ADD AL,C1一C2 (2)MOV AX,C3十C4 (3)SUB DX,C4一C3
(4)SUB AH,C4一C3一Cl (5)ADC AL,C2
5.下面的数据传送指令中,错误的操作是( )。
① MOV SS:[BX+DI],1000H
② MOV DX,1000H
③ MOV WORD PTR[BX],1000H
④ MOV DS,2000H
6.下面指令执行后,变量DAB中的内容是( )。
DAW DW2A05H
DAB DB 0FAH
:
MOV AL,BYTE PRT DAW
SUB DAB,AL
① 0DAH ② 0FAH ③ 0F5H ④ 0D0H
7.执行下列指令后,正确的结果是( )。
MOV AL,100
MOV BL,-2
① AL=100H BL=02H ② AL=64H BL=0FEH
③ AL=64H BL=82H ④ AL=100H BL=0FEH
8.完成下列操作,选用什么指令:
(1)将AX的内容,减去0520H,和上次运算的借位;
(2)将变量名TABL的段地址送AX;
9.D1 DB 20H DUP(?)
D2 DW D1
请写出用一条指令实现取D1的偏移地址=>SI中的三种方法。
第四章 汇编语言程序格式
1.画图说明下列语句分配的存储空间及初始化的数据值。
(1)BYTE—vAR DB ‘BYTE7’,12,12H,2DuP(0,?,3DUP(1,2),?)
(2)WORD—VAR DW 4DUP(0,1,2),?,-5,‘BY’,‘TE’,256H
2.有符号定义语句如下:
BUFF DB l,2,3,‘123’
EBUFF DB 0
L EQU EBUFF—BUFF
问L的值为多少?
3.现有下列数据段:
DATA SEGMENT
STR1 DB‘ABCDEFGHIJKL'
COUNT EQU -STR1
BUF DB COUNT DUP(0)
DATA ENDS
下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。
MOV SI,OFFSET BUF-1
MOV DI,OFFSET BUF
MOV CX,COUNT
_________________
LOOP:MOVSB
_______________________________
LOOP LOP
4.已知数据段定义如下:
DATA SEGMENT
ORG 100H
BUF DW 'CD',1,3 DUP(4,2 DUP(8,6))
VRA DB 4AH
DATA ENDS
单独执行下列语句
LEA BX,BUF BX=_______
MOV CX,VRA-BUF CX=_______(用十六进制数表示)。
第五章 循环与分支程序设计
5.1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
5.2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字母。
5.3 编写程序,将—个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。
5.4 有个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。
5.5 在STRING到STRING十99单元中存放着一个字符串,试编制一个程序测试该字符串中是否存在数字,如有则把CL的第5位置1,否则将该位置0。
5.6 试编写一程序,要求比较数组ARRAY中的三个]6位补码数.并根据比较结果在终端上显示如下信息:
(1)如果三个数都不相等则显示0;
(2)如果二个数有二个相等则显示1;
(3)如果二个敬都相等刚显示2。
第六章 子程序结构
6.1设有10个学土的成绩分别是76、69、81,90、73、88、99、68、100、80分,试编一子程序统计60~69分,70~79分,80~89分,90~99分和100分的人数,并分别存放到S6,S7,S8,S9,S10单元中。
6.2 写—段子程序SKIPLINE。完成输出空行的功能。空出的行数在AX寄存器中。
6.3 编写一个有主程序和子程序的程序模块,子程序的参数是一个N字节数组的首地址TABLE、数N以及字符CHAR。要求在N字节数组中查找字符CHAR,并记录该字符出现的次数。主程序则要求从键盘接受一串字符以建立字节数组TABLE,并逐个显示从键盘键入的每个字符CHAR以及它在TABLE数组中出现的次数。(为简单起见,假设出现的次数≤15,可以用十六进制形式把它显示出来。)
6.4 给定一个正数N>1存放在NUM单元中。试编写一段递归子程序FIB(N), 并将结果存入RESULT单元中。
FIB 函数定义如下:
FIB(1)=1
FIB(2)=1
FIB(n)= FIB(n-1)+ FIB(n-2) n>2
第七章 高级汇编语言技术
7.1 定义宏指令MOVE,使它能将N个字符从一个字符区传送到另一个字符区。
7.2 编写一条宏指令CLRB:完成用空格符将一字符区中的字符清除的工作。字符区
首地址及其长度为变元。
7.3 编写宏指令DISPLAY:能显示已存放在数据区的信息MESSAGE
7.4 试编写一段程序完成以下功能:如给定名为x的字符串长度大干5时,下列指
令将汇编10次:ADD AX,AX
7.5 建立一个你自己的宏库MYLIB.LIB,其中包括宏指令CLS(清屏),LOCATE(光
标定位),DISPLAY(显示信息),MOVE(字符传送)和STARTER(段寄存器初始化),并编一
个小程序使用你的宏库。
第八章 输入输出程序设计
8.1 写出指令将一个字节输出到端口25H。
写出指令将一个字从端口1000H输入。
8.2 用CALL指令来模拟实现INT 21H 现实字符T 的功能
8.3 试编写一段程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第
0位为1。则与其相应的设备就输入—个字符;如果其中任一状态寄存器的第3位为1,则整个输入过程就结束。两个状态寄存器的端口地址分别是0024H和0036H,与其相应的数据输入寄存器的端口为0026H和0038H,输入字符分别存入首地址为BUFFl和BUFF2的存储区中。
8.4类型14H的中断向量在存储器的哪些单元里?
8.5 假设外部设备中有一台硬币兑换器,其状态寄存器的端口地址为0006,数据输入
寄存器的端口地址为0005,数据输出奇存器的端口地址为0007。试用查询方式编制一程序,
该程序作空闲循环等待纸币输入,当状态寄存器的第2位为1时表示有纸币输入,此时可从
数据输入寄存器输入的代码中测出纸币品种,一角纸币的代码为01,二角纸币为02,五角纸币则为03,然后程序在状态寄存器的第3位变成1后,把应兑换的5分硬币数(用16进制表示)从数据输出奇存器输出。
第九章 BIOS和 DOS 中断
9.1 INT 21H 的键盘输入功能1和功能8有什么区别
9.2 给定(SP=0100,(SS)=0300、(PWS)=0240,以及存储单元的内容(00020)=
0040,(00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令INT 8试问执行INT 8指令后,SP、SS、IP、PWS的内容是什么?栈顶的三个字是什么?
编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令)存入内存缓冲区BUFFER。加密表为
输入数字;0、I、2、3、4、5、6、7、8、9
密码数字;7、5、9、1、3、6、8、0、2、4
9.3 编写指令使其完成下列要求:
(1)读当前光标位置。
(2)把光标移到屏底一行的开始。
(3)在屏幕的左上角以正常属性显示一个字母M
9.4 游戏程序常常用随机数来校制某图形在屏幕1:移动,请编写 一程序,用随机数来
控制笑脸符(ASCII码02)显示的位置。笑脸将每次显示的列号总是递增1,而行的位置可能是前行的上一行、下一行或同一行,这根据随机数是0、1或2来决定,当行号为0、24或列号为79时显示结束。笑脸符在每个位置显示1/4秒。
9.5 从键盘上输入一行字符,如果这行字符比前一次输入的一行字符长度长,则保存
该行字符,然后继续输入另—行字符;如果它比前一次输入的行短,则不保存这行字符。按下$:则输入结束,最后将最长的—行字符串显示出来,
展开阅读全文