首页 > 其他分享 ># 实验13

# 实验13

时间:2023-07-27 19:22:05浏览次数:33  
标签:13 code di int mov 实验 ax es

实验13

第一问:

  1. 问题:
    编写程序并安装int 7ch中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处。
    参数:(dh)=行号,(dl)=列号,(cl)=颜色,ds:si指向字符串首地址。
    以上中断例程安装完成后,对下面的程序进行单步跟踪,尤其注意观察int、iret指令执行前后CS、IP和栈中的状态。

  2. 中断例程如下:

    assume cs:code
    code segment
    start:
    mov ax,cs
    mov ds,ax
    mov si,offset d7ch0
    mov ax,0
    mov es,ax
    mov ax,200h
    mov di,ax
    mov cx,offset d7ch0end-offset d7ch0
    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
    
    d7ch0:
    push ax
    push dx
    push bx
    push cx
    push si
    push di
    push es
    
    mov al,160
    mul dh
    mov bx,ax
    mov al,2
    mul dl
    add ax,bx
    mov di,ax
    mov ax,0b800h
    mov es,ax
    mov bl,cl
    show:
    mov cl,ds:[si]
    mov ch,0
    jcxz ok
    mov ch,bl
    mov es:[di],cx
    inc si
    add di,2
    jmp show
    
    ok:
    pop es
    pop di
    pop si
    pop cx
    pop bx
    pop dx
    pop ax
    iret
    
    d7ch0end:
    nop
    
    code ends
    end start
    
  3. 测试程序

    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
    	int 7ch
    
    	mov ax,4c00h
    	int 21h
    
    code ends
    end start	
    

第二问:

  1. 问题

    编写并安装int 7ch中断例程,功能为完成loop指令的功能。
    参数:(cx)= 循环次数,(bx)= 位移。
    以上中断例程安装好后,对下面的程序进行单步跟踪,尤其注意int,iret指令执行前后cs,ip的和栈中的状态。
    在屏幕中间显示80个 “!”。

  2. 中断例程如下:

    assume cs:code
    code segment
    start:
    mov ax,cs
    mov ds,ax
    mov si,offset lp
    mov ax,0
    mov es,ax
    mov di,200h
    mov cx,offset lpend-offset lp
    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
    
    lp:
    push bp
    mov bp,sp
    dec cx
    jcxz lpret
    add [bp+2],bx; 因为push bp,所以要加2
    lpret:
    pop bp
    iret 
    lpend:
    nop
    
    code ends
    end start
    
  3. 测试程序

    assume cs:code
    code segment
    start:
    	mov ax,0b800h
    	mov es,ax
    	mov di,160*12
    	mov bx,offset s-offset se 				;设置从标号se到标号s的转移位移
    	mov cx,80
    s:
    	mov byte ptr es:[di],'!'
    	add di,2
    	int 7ch									;如果(cx)≠0,转移到标号s处
    se:
    	nop
    	mov ax,4c00h
    	int 21h
    code ends
    end start		
    

标签:13,code,di,int,mov,实验,ax,es
From: https://www.cnblogs.com/alphadoiy/p/17585835.html

相关文章

  • ST官方基于米尔STM32MP135开发板培训课程(一)
    本文将以Myirtech的MYD-YF13X以及STM32MP135F-DK为例,讲解如何使用STM32CubeMX结合Developerpackage实现最小系统启动。    1.开发准备1.1Developer package准备a.Developerpackage下载:‍https://www.st.com/en/embedded-software/stm32mp1dev.html‍b.解压后进入......
  • NGS实验室质控-DNA污染控制方法篇(引用)
    NGS实验室质控-DNA污染控制方法篇 本篇主要和大家分享有关NGS检测体细胞突变时判断DNA污染的方法。  一、FDA产品-MSK-IMPACT的DNA污染控制方法 1)判断样本交叉污染(samplemix-up) 计算参考样本和待查样本间的“不一致比例”,即在参考样本中纯合基因......
  • 【小实验】javascript 能够表述的最大整数
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯打开浏览器的控制台,开始输入数值:输入:(16位十进制值)9999999999999998返回同样结果输入:9999999999999999返回:10000000000000000数值不一样,说明精度已经开始丢......
  • # 实验十二
    实验十二编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串"divideerror!"中断处理程序assumecs:codecodesegmentstart:movax,csmovds,axmovsi,offsetdo0;设置源地址movax,0moves,axmovdi,200h;设置目的地址movcx,offsetdo0end-offsetdo......
  • [glibc2.23源码]阅读源码&调试,找出free_hook-0x13分配失败的原因
    0x00写在前面2023.7.27早合肥本次阅读源码是本人第一次,算是一个全新的开始。本次看源码是为了调试roarctf的babyheap那道题目,wp写在独奏者2序章那篇的0x04,为了看看为什么free_hook-0x13不能分配堆。0x01阅读前言和别名搜索aliasweak_alias(__malloc_info,malloc_info......
  • 支持13系统! MacDroid pro Mac连接安卓设备 安卓文件传输工具
    太棒了。。。MacDroid终于支持13系统了!!MacDroid是一款可以让你在Mac电脑上访问和管理Android设备的软件。它可以通过USB连接,让你在Mac上浏览Android设备上的文件,包括照片、音乐、视频、文档等等。同时,它也支持将文件从Mac传输到Android设备上。此外,它还可以让你在Mac上备份和......
  • [USACO13DEC] The Bessie Shuffle S
    [USACO13DEC]TheBessieShuffleS目录[USACO13DEC]TheBessieShuffleS题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示思路code[P3095USACO13DEC]TheBessieShuffleS-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述Bessieispracticinghercar......
  • 1310 车厢重组
    #include<iostream>usingnamespacestd;intmain(){intN,sum=0;cin>>N;inta[N];for(inti=0;i<N;i++){cin>>a[i];}for(inti=0;i<N;i++){for(intj=i;j<N;j++){if(a......
  • 大实验2:用DS1302时钟芯片设计一个高精度时钟
    需求:1.在LCD1602上面显示年,月,日,星期,时,分,秒,并且按秒更新动态显示2.4个独立按键各有各的功能,按键1能够实现进入暂停;按键2实现数值增大;按键3实现数值减小;按键4设定为功能选择键3.具有闹钟设定以及到时报警功能,报警响起时,按任何按键均可以取消报警完成:1.根据DS1302的特性,读取DS13......
  • 苹果 macOS Ventura 13.5 正式发布,修复 Mac Pro 硬盘问题
    苹果今日向Mac电脑用户推送了macOS13.5更新(内部版本号:22G74),本次更新距离上次发布隔了32天。macOS13Ventura(苹果最新系统)v13.5正式版下载此次更新基本没有什么新功能。从苹果支持文档来看,主要修复了MacPro(2023)上SATA硬盘意外断开的问题,之前Mac从睡眠状态唤醒......