汇编语言(王爽第三版)实验13(1)

题目

书上写好的的程序

assume cs:code
data segment
	db "welcome to masm",0
data ends
code segment
  start:mov dh,10
	mov dl,10
	mov cl,2
	mov ax,data
	mov ds,ax
	mov si,0	
	
	;pushf 
	;popf

	int 7ch

	mov ax,4c00h
	int 21h
	
code ends
end start

安装07ch中断例程代码

assume cs:code

code segment
  start:mov ax,cs
	mov ds,ax
	mov si,offset dis
	
	mov ax,0
	mov es,ax
	mov di,200h
	
	mov cx, offset disend-offset dis
	cld
	rep movsb
	
	mov ax,0
	mov es,ax
	mov word ptr es:[7ch*4],200h
	mov word ptr es:[7ch*4+2],0
	
	mov ax,4c00h
	int 21h

dis:mov ax,0b800h
	mov es,ax
	mov ah,0
	mov al,160
	dec dh
	mul dh
	mov di,ax
	mov al,2
	dec dl
	mul dl
	add di,ax
	
	mov ch,0
	mov ah,cl
      s:mov cl,[si]
	jcxz myend
	mov al,cl
	mov es:[di],ax
	add di,2
	inc si
	jmp s
  myend:iret
disend:nop

code ends
end start

单步跟踪

  1. 一开始想法是根据执行t命令后显示的flag register标志位的值得出flag register这一个字节的值,后来发现flag register不作为flag位的值不知道,于是在代码中写了pushf和popf来显示flag register的值
    结果如下:
    在这里插入图片描述
    即flag register的值位7202H
  2. 执行过程中CS,IP以及栈中数值变化

(1)未执行中断例程前栈以及cs和ip的值在这里插入图片描述
压入栈的ip是int 7ch后的一行代码的ip,即0010H五
执行中断例程后,cs变为0,ip为0200,栈中分别压入flag register,ip,cs
在这里插入图片描述
执行中断例程到iret,执行完iret后,cs,ip,flag register恢复为原来的值
在这里插入图片描述
继续执行主程序,直到结束
结束

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值