您的当前位置:首页正文

第十章AD和DA转换

2021-03-30 来源:好走旅游网


第三章 指令系统

1. 在3.2.2.3节中,对于无符号BCD码中若取uuuu=0011,请问此码为什么编码?

2. 按表3.2的解释,那么计算机处理的数据,其具体的数据类型有谁定义?

3. 写出汇编语言源程序的组织结构。

4. 操作符和伪操作符分别由哪个部件执行?

5. 按下面要求写出相应的数据定义语句(未指定变量名的,可任意指定或缺省)。

(1)定义一个字节区域,第一个字节的值为20,其后跟20个初值为0的连续字节;

(2)定义一个以0为结束符的字符串,其初值为:The course is easy;

(3)定义一个以'$'为结束符的字符串,该串中含有换行符和回车符;

(4)定义100个字,其初值为0;

(5)从一个偶地址开始定义一个字变量word;

(6)先定义一个字符串String,其偏移量指定为10,其初值为\"ABCDEF\",然后再定义3个字类型的数组Data,要求String和Data的偏移量相同;

(7)定义一个字符串String,其初值为\"12345678\",再定义4个字类型的数组Data,

要求String和Data共享同一片内存单元;

6. 下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。

VAR1 DB 10,2

VAR2 DW 5 DUP(?),0

VAR3 DB ‘HOW ARE YOU?’,‘$’

VAR4 DD -1,1,0

VAR5 DW VAR3

VAR6 DD VAR3

假设,变量定义在0100H段,VAR1在段内的偏移地址为0000H。

7. 把下列C语言程序中的说明性语句改写成等价的汇编语言语句。

#define N 100

struct buffer{

int len1, len2, array[N];

} buff;

char Data[N];

8. 定义一个字符串String,其初值为\"ABCDEFG\",再定义4个字类型的数组Data,要求String和Data共享同一片内存单元;

9. 按下列要求分别写出汇编语言的记录定义。

(1)定义16位标志位寄存器,其相应位用其标志位的符号来命名,未用部分的命名自行确定;

(2)定义一个组合式BCD码类型,并赋初值34H。

10. 在汇编指令中,存于内存中的数据如何表示?描述内存中的数据有哪几种寻址方式?有关内存的寻址方式描述的是什么地址?

11. 在3.6.1中,谈谈操作数与参加操作的数据有何区别?

12. 判断下列操作数的寻址方式的正确性,对正确的,指出其寻址方式,对错误的,说明其错误原因。

(1)[AX] (2)BP

(3)[SI+DI] (4)[SP]

(5)CS (6)BH

(7)[BX+BP+32] (8)[BL+44]

(9)[CX+90] (12)[DX]

(11)BX+90H (14)[BX*4]

(13)SI[100H] (16)[DX+90H]

13. 假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据变量wVal的偏移地址为0050H,请指出下列指令源操作数是什么寻址方式?其物理地址是多少?

(1)MOV AX,0ABH (2)MOV AX,[100H]

(3)MOV AX,wVal (4)MOV BX,[SI]

(5)MOV AX, wVal[BX] (6)MOV CL,[BX][SI]

(7)MOV wVal[SI],BX (8)MOV [BP][SI],100

14. 已知SS=0FF10H,SP=00A0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,画出堆栈区和SP的内容变化过程示意图。

15. 无符号的扩展是否可用语句CBW或CWD?

16. 加减法指令为什么没有无符号数和带符号数指令的区分?乘除法为什么有无符号数和带符号数指令的区分?

17. 如果运算的操作数不是ASCII,但是分离式BCD码数,可否用AAS指令进行调整?

18. 写出实现下列计算的指令序列。(假定X、Y、Z、W、R都为字变量)

(1)Z=W+(Z+X) (2)Z=W-(X+6)-(R+9)

(3)Z=(W*X)/(R+6) (4)Z=((W-X)/5*Y)*2

19. 按下列要求编写指令序列。

(1)清除DH中的最低三位而不改变其它位,结果存入DL中;

(2)把DI中的最高4位置1而不改变其它位;

(3)把AX中的0~3位置1,7~9位取反,13~15位置0;

(4)测试BX中的第2、5和9位中是否有一位为1;

(5)测试CX中的第1、6和11位中是否同时为1;

(6)测试AX中的第0、2、9和13位中是否有一位为0;

(7)测试DX中的第1、4、11和14位中是否同时为0;

20. 数据定义语句如下所示:

bNum1 DB 80H,4FH,6dH,19H

bNum2 DB 5 DUP(?)

bNum3 DB 5 DUP(?)

bNum4 DB 5 DUP(?)

自bNum1单元开始存放的是一个四字节的十六进制数(低位字节在前),要求:

(1)编一段程序将这个数左移两位、右移两位后分别存放到自bNum2和bNum3开始的单元(注意保留移出部分)。

(2)编一段程序将这个数求补以后存放到自bNum4开始的单元。

21. 内存中以FIRST和SECOND开始的单元中分别存放着两个16位组合的十进制(BCD码)数,低位在前。编程序求这两个数的组合的十进制和,并存到以THIRD开始的单元。

22. 试编程序将内存从40000H到4AFFFH的每个单元中均写入20H,并再逐个单元读出比较,看写入的与读出的是否一致。若全对,则将AL置0FFH;只要有错,则将AL置00H。

23. 设变量单元A、B、C存放有三个数,若三个数都不为零,则求三个数的和,存放在D中;若有一个为零,则将其余两个也清零,试编写程序。

24. 有一个100个字节的数据表,表内元素已按从大到小的顺序排列好,现给定一元素,试编程序在表内查找,若表内已有此元素,则结束;否则,按顺序将此元素插入表中适当的位置,并修改表长。

25. 试编程序,统计由40000H开始的16K个单元中所存放的字符“A”的个数,并将结果存放在DX中。

26. 把下列C语句的语句改写成功能相同的汇编语言程序片段(其中:变量都为整型变量)。

(1)h = (key & 0XFF00) >> 8;

(2)k = (k + '1' – 0xabcd) / 56;

(3)for (i = s = 0; i < 100; i++) s += data[i] * 2;

(4)for (s = 0, i = 100; i > 0; i--) s += i * 2;

27. 把下列C语言的语句改写成等价的汇编语言程序段(不考虑运算过程中的溢出)。

If (a<1 || b/4 > 10 && c%8==5)

{

a = 20+b++;

c <<= 2;

}

else

{

a = 21-(++c);

b--;

}

其中:变量a、b和c都是有符号的整型(int)变量。

28. 假设内存单元中有三个字a、b和c,编写一个程序,它可判断它们能否构成一个三角形,若能,CF为1,否则,CF为0。

29. 编写一段程序,接收从键盘输入的10个数,输入回车符表示结束,然后将这些数加密后存于BUFF缓冲区中。加密表为:

输入数字:0,1,2,3,4,5,6,7,8,9;密码数字:7,5,9,1,3,6,8,0,2,4

30. 编写一个显示\"Hello\"的程序,试比较它的COM格式文件和EXE格式文件的大小。

31. 宏和子程序的主要区别有哪些?一般在什么情况下选用宏较好,在什么情况下选用子程序较好?

32. 在有标号的宏定义体中,为什么最好使用LOCAL伪指令来说明标号?它在宏定义体中应处于什么位置?

33. 编写一个宏来定义26个大写字母表。

34. INCLUDE伪指令的作用是什么?

35. 在IEEE标准,二进制浮点数的表示为什么没有阶符?

36. 把2~10各整数的平方根依次存入单精度浮点数组ROOTS。

37. CPU的扩展指令集主要是为解决什么问题而产生的?

因篇幅问题不能全部显示,请点此查看更多更全内容