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