[063][汇编原理]检测点13.1 13.2

检测点13.1

[063][汇编原理]检测点13.1 13.2_第1张图片
汇编语言 检测点13.1.png

(1)

  • loop指令 的位移范围是-128~127 ,即向低地址最大移动128、向高地址最大移动127【参考 书 第三版9.8节 loop指令】
  • 既然是实现loop指令的功能,那么就和loop指令位移范围一样

(2)

实际运行

[063][汇编原理]检测点13.1 13.2_第2张图片
检测点13.1 用7CH中断程序完成jmp near ptr s指令的功能.png

完整源码

  • 应用程序
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
            mov al,02H
            mov es:[di+1],al
            inc si
            add di,2
            mov bx,offset s - offset ok
            int 7CH
        ok: mov ax,4c00H
            int 21H
        
    code ends
    end start
  • 中断处理程序
assume cs:code
code segment
    start:  mov ax,cs
            mov ds,ax
            mov si, offset lp
            
            mov ax,0
            mov es,ax
            mov di,200H
            mov cx,offset lpend - offset lp
            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
            
    lp:     push bp
            mov bp,sp
            add [bp+2],bx
    lpret:  pop bp
            iret
    lpend:  nop
    code ends
    end start

使用 7CH 中断程序完成 jmp near ptr s 指令的功能

  • jmp near ptr s 相当于 只执行一次并且跳回到标号s处的loop指令

代码参考

  • https://www.jianshu.com/p/6b00375b3046

检测点13.2

[063][汇编原理]检测点13.1 13.2_第3张图片
检测点13.2.png
  • (1)错误。 BIOS(基本输入输出系统),是放在ROM里面的程序,ROM是Read Only Memory,只读不写的,因此无法修改。
  • (2)错误。中断例程int 19H 被执行之后,操作系统DOS才会被启动,先后顺序不能改。

你可能感兴趣的:([063][汇编原理]检测点13.1 13.2)