8086汇编语言习题解答

8086/8088汇编语言习题解答

第一章

1.1、试根据自己使用计算机的经历,列举几个必须使用或最好是使用汇编

语言编制程序的事例。 1.2、试完成下列数制间的转换 ⑴、十进制数转换为8位二进制数 十进制:100

对应 二进制:01100100B

十进制:56 对应 二进制:00111000B 十进制:111 对应 二进制:01101111B 十进制: 120 对应 二进制:01111000B

十进制: 70 对应 二进制:01000110B ⑵、8位二进制数(无符号数)转换为十进制数

二进制:01010101B 二进制:10101010B 二进制:11110000B 二进制:00001111B

对应 对应 对应 对应

十进制:85 十进制:170 十进制:240 十进制:15

⑶、十进制数转换为十六进制数

十进制:40

对应 二进制:00101000B

十进制:80 对应 二进制:01010000B 十进制:105 对应 二进制:01101001B 十进制: 114 对应 二进制:01101101B

十进制: 207 对应 二进制:11001111B

.

1.3、试把下面用补码表示的二进制数转换为对应的十进制真值 二进制补码:01111000 二进制补码:11011001 二进制补码:10000001 二进制补码:10001000 二进制补码:00100111 二进制补码:11110000

对应的十进制值数真值:+120 对应的十进制值数真值:-39 对应的十进制值数真值:-127 对应的十进制值数真值:-120 对应的十进制值数真值:+39 对应的十进制值数真值:-16

1.4、由键盘输入字符通常都是以该字符的ASCII码形式表示的。若现在从键盘上输入十六进制数0~F,那么应如何处理才能把十六进制转换为4位二进制数0000~1111.

答:将键盘输入的数0~F的ASCII码,每输入一个字符,减去30H后,再存入内存,这样就完成了把从键盘上输入的十六进制ASCII码转换为4位二进制数0000~1111.

1.5、试分别判断下列各组数据中哪个数据最大?哪个最小? ①、A=0.101B ②、A=1011B

B=0,101D B=1011D

?1C=0,101H C=1011H

?3答:第①组:A=1×2+1×2=0.625 B=0.101

C=1×16+16=0.0625+0.00024414=0.06274414

?1?3 所以A最大,C最小

第②组,B最大,A=B最小

1.6、现有一个二进制数10110110.若将该数看着是无符号数、原码表示的带符号数、补码表示的带符号数,它对应的十进制数的真值是多少?

.

.

答:10110110.的无符号数的十进制是:+182; 10110110.的原码带符号数的十进制是:-54 10110110.补码表示的带符号数的十进制是:+74

1.7、下列各组数据均为十进制数,先将各数据转换为补码表示的带符号数,然后用补码的加减运算分别完成下列各小题,并用十六进制数形式回答运算结果。

①、58+36 ⑤、58-36

②、(-58)+36 ⑥、(-58)-36

③、58+(-36) ⑦、58-(-36)

④、(-58)+(-36)⑧、(-58)-(-36)

答:①、58+36的运算结果是:00111010+00010100=01001110=01011110

②、(-58)+36的运算结果是:11000110+00010100=11101010=-000101001 ③、58+(-36)的运算结果是:00111010+11011100=00010110 ④、(-58)+(-36)的运算结果是:11000110+10100010=10100010 ⑤、 58-36的运算结果是:00111010+11011100=00010110 ⑥、(-58)-36的运算结果是:11000110+10100010=10100010

⑦、58-(-36)的运算结果是:00111010+00010100=01001110=01011110 ⑧、(-58)-(-36)的运算结果是:11000110+00010100=11101010=-000101001

第二章

2.1、试说明8086/8088CPU中有哪些寄存器?各有什么用途? 答:寄存器AX、AL:在乘法指令中,存放乘数和乘积;

在除法指令中,存放被除数和商; 在未组合BCD码运算的校正指令中

在某些串操作指令(LODS,STOS,SCAS)中 在输入输出令中作数据寄存器

.

.

寄存器AH:在LAHF指令中作目的寄存器

寄存器AL:在组合型BCD码的加减法校正指令中

在XLAT指令中作目的寄存器

寄存器BX:在XLAT指令中基址寄存器 寄存器CX:在循环指令中作循环次数计数器 寄存器CL:在移位指令中作移位次数计数器

寄存器DX: 在字数据的乘法和除法指令中辅助累加器 寄存器SP:在堆栈操作中作堆栈指计 寄存器SI:在串操作指令中作源变址寄存器 寄存器DI:在串操作指令中作目的变址寄存器

2.2、试说明8086/8088CPU中标志寄存器各标志位的意义? 答:8086/8088CPU中标志寄存器各标志位的意义是:

CF:进位标志

PF:奇遇标志 ZF:零值标志 TF:单步标志

AF:辅助进位标志 SF:符号位标志

IF: 中断允许标志 OF:溢出标志

DF:方向标志

2.3、哪些操作只能隐含使用某个段寄存器,而不能用其他寄存器替代?哪些操作除隐含使用某个段寄存器外,还可以用其他段寄存器替代?

答:在“取指令”、“堆栈操作”、“存目的串”三操作时,只能分别使

用隐含段寄存器“CS”、“SS”“ES”,不能用其他寄存器替代;

在“取源串”、“以BP作基址”、“存取一般变量”三操作时,除了可分别使用隐含段寄存器“DS”、“SS”“DS外,还可分别使用“CS、SS、ES”,

.

联系客服:779662525#qq.com(#替换为@)