汇编语言(王爽)第二版检测点13.1

检测点13.1

第一题

7ch中断例程如下:

lp:  push bp
     mov bp,sp
     dec cx
     jcxz lpret
     add [bp+2],bx
lpret:   pop bp 
     iret

(1)在上面的内容中,我们用7ch中断例程实现loop的功能,则上面的7ch中断例程所能进行的最大转移位移是多少?
最大位移是FFFFH

第二题

(2)用7ch中断例程完成jmp near ptr s指令功能,用bx向中断例程传送转移位移。
应用举例:在屏幕的第12行,显示data段中以0结尾的字符串。

assume cs:code
data segment
     db 'conversation',0
data ends
code segment
start:
     mov ax,data
     mov ds,ax
     mov si,0
     mov ax,0b800h
     mov es,ax
     mov di,12*160
s:   cmp byte ptr [si],0
     je ok
     mov al,[si]
     mov es:[di],al
     inc si
     add di,2
     mov bx,offset s-offset ok
     int 7ch
ok:  mov ax,4c00h
     int 21h
code ends
end start

jmp near ptr s指令的功能为:(ip)=(ip)+16位移,实现段内近转移

assume cs:code   
code segment  
start:
mov ax,cs  
mov ds,ax  
mov si,offset do0                ;设置ds:si指向源地址  
mov ax,0  
mov es,ax  
mov di,200h                      ;设置es:di指向目标地址  
mov cx,offset do0end-offset do0  ;设置cx为传输长度  
cld                              ;设置传输方向为正  
rep movsb  
mov ax,0  
mov es,ax  
mov word ptr es:[7ch*4],200h  
mov word ptr es:[7ch*4+2],0      ;设置中断向量表  
mov ax,4c00h  
int 21h  
do0:
     push bp
mov bp,sp
     add [bp+2],bx                    ;ok的偏移地址+bx得到s的偏移地址
pop bp
iret
mov ax,4c00h  
int 21h  
do0end:
     nop
code ends
end start

你可能感兴趣的:(汇编语言(王爽)第二版检测点13.1)