实验三:转移指令跳转原理及其简单应用测试

实验内容:

任务一:

 

 

 

 

此例中标号s1的偏移地址为000D,loop指令后第一个字节的偏移地址为001B

位移量-14

 

 

 

 

此例中标号s2的偏移地址为0029,loop指令后第一个字节的偏移地址为0039

位移量-16

 

任务二:

AX=0021;BX=0026;CS=076C;

 

任务三:

 

 

 

 

复制代码
assume cs:code, ds:data
data segment
    x db 99, 72, 85, 63, 89, 97, 55
    len equ $- x
data ends

code segment
start:
    mov ax, data
    mov ds, ax
    mov si, offset x
    mov cx, len
  s:mov ah, 0
    mov al, [si]
    mov dl, 10
    div dl
    mov bx, ax
    mov ah, 2
    call printNumber
    call printSpace
    inc si
    loop s
    mov ah, 4ch
    int 21h

printNumber:
    mov dl, bl
    or dl, 30h
    int 21h
    mov dl, bh
    or dl, 30h
    int 21h
    ret
printSpace:
    mov dl, ' '
    int 21h
    ret
code ends
end start
复制代码

 

任务四:

 

 

 

 代码:

assume cs:code, ds:data
data segment
    str db 'try'
    len equ $ - str
data ends
 
code segment
start:
    mov ax, data
    mov ds, ax
 
    mov si, offset str
    mov bh, 0
    mov bl, 2
    call printStr
 
    mov si, offset str
    mov bh, 24
    mov bl, 4
    call printStr
 
    mov ah, 4ch
    int 21h
 
printStr:mov cx, len
  s:mov ax, 0b800h
    mov dx, cx
    mov ch, 0
    mov cl, bh
  t:add ax, 10
    loop t
    mov cx, dx
    mov es, ax
    mov di, si
    add di, si
    mov al, [si]
    mov es:[di], al
    mov es:[di].1, bl
    inc si
    loop s
    ret
code ends
end start

 

  

任务五:

 

 

 代码:

assume cs:code, ds:data
data segment
    stu_no db '201983300512'
    len = $ - stu_no
data ends
 
code segment
start:
    mov ax, data
    mov ds, ax
    call blueCurtain
    call printStu_no
 
    mov ah, 4ch
    int 21h
printStu_no:mov ax, 0b800h
    mov cx, 24
  s:add ax, 10
    loop s
    mov es, ax
    mov di, 0
    mov cx, 34
  l:mov byte ptr es:[di], '-'
    add di, 2
    loop l
    mov cx, len
    mov si, offset stu_no
  t:mov dl, [si]
    mov es:[di], dl
    inc si
    add di, 2
    loop t
    mov cx, 34
  r:mov byte ptr es:[di], '-'
    add di, 2
    loop r
    ret
 
blueCurtain:mov ax, 0b800h
    mov es, ax
    mov cx, 2000
    mov si, 0
  b:mov byte ptr es:[si].1, 23
    add si, 2
    loop b
    ret
 
code ends
end start

 

posted on 2021-11-30 11:33  楚之南冥灵  阅读(42)  评论(2编辑  收藏  举报