前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >汇编语言篇——转移指令的原理

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

原创
作者头像
会洗碗的CV工程师
发布2023-11-30 23:54:10
1960
发布2023-11-30 23:54:10
举报
文章被收录于专栏:LongJava学习资料LongJava学习资料

实验目的和要求

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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 实验目的和要求
  • 二 实验环境
  • 三 实验内容及结果
  • 四 实验分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com