实验三:转移指令跳转原理及其简单应用测试
实验内容:
任务一:
此例中标号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