汇编语言篇——转移指令的原理

2023-11-30 23:54:10 浏览数 (3)

实验目的和要求

1、理解并掌握CPU转移指令的原理;

2、掌握特定功能的编程:显示字符串

实验环境

Dos界面

实验内容及结果

1、 将教材中相关程序上机调试,用Debug 跟踪其执行过程,理解转移指令的原理。

在上面程序可以知道

mov di,offset s;mov si,offset s2;mov ax,cs:[si];mov cs:[di],ax

这四条指令就是把s2处的第一条指令对应的机器码复制到s处,而s2处的指令会改变ip值使ip减去16位移到s1处的ip,也就是是说该jmp就是改变当前ip去实现跳转。当程序执行到s0处时,跳到s处执行而s处由于刚才复制了s2处的机器码,因此s处的指令会将ip继续跳到程序第一条指令,mov ax,4c00h,使得程序得以结束。

2、 编程:在屏幕中间分别显示不同颜色(如:绿色、绿底红色、白底蓝字)的指定的字符串。

实验代码:

assume cs:code,ds:data,ss:stack

  data segment

  db 'welcome to masm!'

  db 02h,24h,71h

  data ends

  stack segment

  dw 8 dup(0)

  stack ends

  code segment

  start:mov ax,data

  mov ds,ax

  mov ax,stack

  mov ss,ax

  mov sp,10h

  mov bx,0

  mov di,0

  mov ax,0b872h

  mov cx,3

 s3:push cx

     push ax

     push di

     mov es,ax

     mov si,0

     mov di,0

     mov cx,10h

 s1:mov al,ds:[bx si]

     mov es:[bx di],al

     inc si

     add di,2

     loop s1

     mov si,1

     pop di

     mov al,ds:10h[bx di]

     mov cx,10h

 s2:mov es:[bx si],al

      add si,2

      loop s2

      inc di

      pop ax

      add ax,0ah

      pop cx

      loop s3

      mov ax,4c00h

      int 21h

code ends

end start

这个实验主要考察的是寻址方式和循环对于寄存器值的灵活使用。

实验分析

这两次实验还是很值得去推敲和思考的,jmp指令的原理和寻址方式的使用,还有栈和寄存器值的灵活使用

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞