汇编语言作业答案
1.3 什么是汇编语言源程序、汇编程序、目标程序?
  见教材P4
1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0Dh、0aH对应的是什么字符?
见教材P8
1.11 计算机中有一个“01100001‘编码,如果把它认为是无符号数,它是十进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符?
97,61h,a
1.13什么是DOS和POM-BIOS?
  DOS:磁盘操作系统;POM-BIOS:可编程的基本输入输出系统
2.3 举例说明CF和OF标志的差异。
a的ascii的编码是多少见教材P20-21
2.5 什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达:
(1)FFFFh:0  (2)40h:17h  (3)2000h:4500h  (4)B821h:4567h
见教材P22-23  FFFF0h  417h    24500h    BC777h
2.6 8086有哪4种逻辑段,各种逻辑段分别是什么用途?
见教材P23
2.10 说明下列指令中源操作数的寻址方式?如果BX=2000H,DI=40H,给出DX的值或有效地址EA的值。
(1)mov dx,[1234h]    直接寻址
(2)  mov dx,1234h      立即寻址
(3)  mov dx,bx        寄存器寻址
(4)  mov dx,[bx]        寄存器间接寻址
(5)  mov dx,[bx+123h]  寄存器相对寻址
(6)  mov dx,[dx+di]      基址变址寻址
(7) mov dx,[bx+di+1234h] 相对基址变址寻址
2.11  已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A  4C  B7  65H,说明下列每条指令执行后AX寄存器的内容。
(1)mov ax,1200h            1200h
(2)  mov ax,bx                0100h
(3)  mov ax,[1200h]            2a4ch
(4)  mov ax,[bx]              1234h
(5)  mov ax,[bx+1100h]        2a4ch
(6)  mov ax,[bx+si]            5678h
(7) mov ax,[bx][si+1100h]        b765h
2.15 已知SS=FFAOH、SP=00B0H,画图说明执行下列指令序列时,堆栈区和SP的内容如何变化?
mov ax,8057h
  push ax      SP=00B2  [00B1]=80h
  mov ax,0f79h
  push ax      SP=00B2  [00B2]=0f79h
  pop bx        BX=0f79h  SP=00B1
  pop [bx]      SP=00B0h
2.16 给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:
mov al ,89h 不影响标志
add al, al    见教材P38
add al, 9dh  见教材P38
cmp al, 0bch  见教材P40
sub al, al    见教材P39
dec al      见教材P39
inc al        见教材P38
2.17 设均为双字数据,分别存放在地址为的存储单元中,他们的运算结果存入单元。阅读如下程序段,给出运算公式。
  mov ax,X
  mov dx,X+2
  add an,Y
  adc dx,Y+2
  add ax,24
  adc dx,0
sub ax,Z
  sbb dx,Z+2
  mov W,ax
  mov W+2,dx        Y+X+24-Z
2.18 请分别用一条汇编语言指令完成如下功能:
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。ADD DX,BX
(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX+SI]
(3)用BX和位移量OB2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回寄存器中。ADD CX,[BX+0B2H]
(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数4312H相加,并把结果送回该存储单元中。
ADD [0520H],4321H
(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。ADD AL,0A0H
2.20 指出下列指令的错误
(1)xchg[si],30h 不能用立即数    (2)pop cs      没有错误
(3) sub[si],[di] 不能全为mem    (4)push ah      ah应为字数据
(5) adc ax,ds 不能用段寄存器     (6)add [si],80h  [si]应为regmem
(7)in al ,3fch 位数不对          (8)out dx,ah    ah只能用alax
2.21 给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。
mov ax,1470h
and ax,ax
or ax,ax
xor ax,ax
not ax
test ax,0f0f0h    参考教材P20
2.23 编写程序段完成如下要求:
(1)用位操作指令实现AL(无符号数)乘以10参考教材P492.32
(2)用逻辑运算指令实现数字0~9的ASCII码与非压缩BCD码的相互转换
参考教材P472.28
(3)把DX.AX中的双字右移4位参考教材P492.32
2.25 已知数据段500h~600h处存放了一个字符串,说明下列程序段执行后的结果:
mov si,600h
mov di,601h
mov ax,ds
mov s,ax
mov cx,256
std      数据段向后移动一个字,即数据段首地址为501h和-601h
rep movsb
2.26 说明下列程序段的功能
cld
mov ax,0fefh
mov cx,5
move s,bx
mov di,2000h
rep stows  0fefh开始的五个字的内容,送致32000H开始的单元中
2.32 判断下列程序段跳转的条件
(1)xor ax,leleh
je equal    ax=1e1eh
(2)test  al,10000001b
jnz there  al=10000000 0000001 10000001
(3)cmp cx,64h
jb there  cx<64h
2.34 假设AX和SI存放的是有符号数,DX和DI存放的是无符号数,请用比较指令和条件转移指令实现以下判断:
(1) 若DX>DI,转到above执行;            CMP DX,DI    JA  above
(2) 若AX>SI,转到greater执行;            CMP AX,SI    JA  greater
(3) 若CX=0,转到zero执行;              JNC zero
(4) 若AX-SI产生溢出,转到overflow执行; CMP AX,SI  JO overflow
(5) 若SI<=AX,转到less_eq执行;          CMP SI,AX  JBE less_eq
(6) 若DI<=DX,转到below_eq执行。        CMP DI,DX  JBE below_eq
2.35  有一个首地址为array的20个字的数值,说明下列程序的功能。
  mov ex,20
      mov ax,0
      mov si,ax
sun_loop: add ax,array[si]
        add si,2
        loop sum_loop
        mov total,ax array中的20个字的内容相加,并把结果送至total中。
2.36 按照下列要求,编写相应的程序段:
(3)编写一个程序段,在DX高4位全为0时,使AX=0;否则使AX=-1。
参考教材P482.30
(6)以知字符串string包含有32KB内容,将其中的‘$’符号替换成空格。
参考教材P522.37
(7)有一个100个字节元素的数组,其首地为array,将每个元素减1(不考虑溢出)存于原处。参考教材P522.36
2.39以知AX、BX存放的是4位压缩BCD表示的十进制数,请说明如下子程序的功能和出口参数。
  add al,bl
  daa
  xchg al,ah
  adc al,bh
  daa
  xchg al,ah
实现AXBX中的的4BCD数相加,结果仍为BCD表示的十进制数,存于AX中,出口参数为ax.
2.44 补充例2.42,当有溢出时显示“Error!Overflow!”,无溢出时显示“OK”。
参看教材P592.42 P662.49
3.17 修改例题3.3,现在用字定义伪指令dw、字串传送指令movsw和字符传显示9号功能调用实现。参看教材P793.1a P933.3
3.22 在SMALL存储模式下,简化段定义格式的代码段、数据段和堆栈段和却省段名、定位、组合以及类别属性分别是什么?参看教材P992SMALL
3.25 按下面要求写一个简化段定义格式的源程序
(1)定义常量num,其值为5;数据段中定义字数组变量datalist,它的头5个字单元中依次存放-1、0、2、5和4,最后1个单元初值不定;参考教材P933.2
(2)代码段中的程序将datalist中头num个数的累加和存入datalist的最后1个字单元中。
Num        equ  5

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。