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指令的原理和寻址方式的使用,还有栈和寄存器值的灵活使用
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。