实验10

1.在屏幕8行3列,用绿色显示data段中的字符串

assume cs:code
data segment
db'Welcome to masm!',
data ends code segment
start:
mov dh, ;行
mov dl, ;列
mov cl, ;颜色
mov ax,data
mov ds,ax
mov si, ;字符串首地址
call show_str
mov ax,4c00h
int 21h show_str:
push ax ;用到的寄存器入栈
push bx
push cx
push dx
push es
push di mov ax,0B800h ;定义显示缓冲区的段地址
mov es,ax ;N为行,M为列
;计算写入首地址的偏移地址 公式:1) 0A0H*(N)+M*2
mov al,dh
mov ah, mov bl,0A0h ;每行偏移A0H
mul bl
mov bl,dl
mov bh,
add ax,bx
add ax,bx
mov di,ax ;ax为首地址的偏移地址
mov dl,cl ;dl存颜色
mov ch, nx:
mov cl,ds:[si] ;判断字符是否为00
jcxz over
mov bl,cl
mov bh,dl
mov es:[di],bx ;赋值
add si,
add di,
jmp short nx over:
pop di
pop es
pop dx
pop cx
pop bx
pop ax
ret code ends
end start

2.解决除法溢出

参数:ax=被除数的低16位,dx=被除数的高16位,cx=除数

返回值:dx=结果的高16位,ad=结果的低16位,cx=余数

assume cs:code
code segment
start:
mov ax,4240h
mov dx,000fh
mov cx,0Ah
call divdw
mov ax,4c00h
int 21h
divdw:
push ax
mov ax,dx
mov dx,
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
ret
code ends
end start

3.数值显示

将data段中的数据以十进制形式显示出来

assume cs:code
data segment
dw ,,,,,
dw ,,,,,,,
data ends code segment
start:
mov ax,data
mov ds,ax
mov ax,20h
mov ax,
mov ax,0B800h
mov es,ax
mov si, ;si为数据段的偏移
mov di, ;di为显示缓冲区的偏移
mov cx,
call dioffset ;计算di值 s:push cx
mov ax,[si] ;取数据
mov dx,[]
mov bx, ;bx为数字的位数
mov bp,0ch
call dtoc
mov cx,bx
s5:call display
loop s5
add si,
pop cx
loop s
mov ax,4c00h
int 21h ;把数字转为字符串
dtoc:
mov cx, ;除数10
call divdw
jcxz s6
add cx,30h
mov ds:[bp],cx ;数字入栈
add bp,
inc bx ;数字位数加1
jmp short dtoc
s6:ret ;把字符存入显示缓冲区中
display:
push dx
mov dx,ds:[bp-]
sub bp,
mov dh,
mov es:[di],dx ;赋值
add di,
pop dx
ret ;求显示缓冲区偏移地址
dioffset:
push bx
push dx
mov dh, ;行
mov dl, ;列
mov al,dh
mov ah,
mov bl,0A0h ;每行偏移A0H
mul bl
mov bl,dl
mov bh,
add ax,bx
add ax,bx
mov di,ax ;ax为首地址的偏移地址
pop dx
pop bx
ret
;防溢出除法
divdw:
push bx
push ax
mov ax,dx
mov dx,
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
pop bx
ret code ends
end start

CALL和RET指令实验的更多相关文章

  1. 王爽汇编第十章,call和ret指令

    目录 王爽汇编第十章,call和ret指令 call和ret指令概述: ret和retf ret指令 retf指令 call 和 ret 的配合使用 call指令详解 call原理 call指令所有写 ...

  2. 汇编语言---call和ret指令

    汇编语言--call和ret指令 call和ret指令 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP. 它们经常被共同用来实现子程序的设计. ret和retf ret指令用栈 ...

  3. 汇编学习笔记(7)call和ret指令

    ret和retf CPU执行ret指令时进行以下两步操作: (IP)=((ss)*16+(sp)) (sp)=(sp)+2 这相当于pop IP CPU执行retf指令时进行以下四步操作: (IP)= ...

  4. [汇编学习笔记][第十章 CALL和RET指令]

    第十章 CALL和RET指令 call和ret指令都是转移指令,它们都修改CS和IP.经常被共同用于实现子程序的设计.这一章,我们讲解call和ret指令的原理 10.1 ret和retf ret指令 ...

  5. call 和 ret 指令

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  6. 汇编-10.0-CALL和RET指令

    call和ret指令都是转移指令,他们都是修改IP,或同时修改CS和IP.它们常被共同用来实现子程序设计. 1.ret和retf ret指令用栈中的数据,修改IP的内容,从而实现近转移: retf指令 ...

  7. 第十章 Call 和 Ret 指令

    引言 想想程序之间的加载返回过程. call 和 ret 指令都是转移指令,它们都修改 IP,或同时修改 CS 和 IP. call 和 ret 经常被共同用来实现自程序的设计. 这一章,我们讲解 c ...

  8. 汇编语言笔记 CALL和RET指令

    转载地址:http://www.cnblogs.com/dennisOne ☞模块化程序设计 模块化程序设计 汇编语言通过call和ret指令实现了模块化程序设计.可以实现多个相互联系.功能独立的子程 ...

  9. 自己总结:汇编CALL和RET指令

    ret指令,相当于 pop IP:修改IP的内容,从而实现近转移 retf指令,相当于 pop IP pop CS:修改CS和IP的内容,从而实现远转移 -------------- CPU执行cal ...

随机推荐

  1. Docker学习-环境搭建

    ChuanGoing 2019-12-15 本篇是DevOps Docker介绍第一篇,首先说下为何另开一篇来讲解本系列. 原因有二: 1.重新复习下个人对于DevOps/Docker的学习之路 2. ...

  2. 源码分析 RocketMQ DLedger(多副本) 之日志复制(传播)

    目录 1.DLedgerEntryPusher 1.1 核心类图 1.2 构造方法 1.3 startup 2.EntryDispatcher 详解 2.1 核心类图 2.2 Push 请求类型 2. ...

  3. 基于JavaScript google map集成流程

    google地图集成流程 一.获取Google Map API密钥 1.进入Google官网 => https://www.google.com.hk/ ,申请一个谷歌账号(如果没有)然后访问下 ...

  4. node-sass下载失败

    在angular项目中下载依赖npm install时提示node-sass安装失败,解决方法如下: 1.下载win32-x64-57_binding.node文件至指定目录 2.添加环境变量: 变量 ...

  5. django查询中模糊的知识点,filter(blog=blog),filter(username=username).first()--这两者只需一招让你分清QuerySet对象,和用户字典对象

    只需一招让你分清QuerySet对象,和用户字典对象 article_list = models.Article.objects.filter(blog=blog) user_obj = models ...

  6. vscode搭建C/C++环境

    windows安装Mingw-w64 Mingw-w64安装 准备工作 创建文件夹Vc_c++ 在Vc_c++文件夹下创建下面两个文件夹 在g++下创建demo.cpp 在gcc下创建demo.c 打 ...

  7. 如何给div、p添加onload事件?

    前提 其实只有 <body>.<frame>.<iframe>.<img>.<link>.<script>.<style& ...

  8. 两种最常用的 HTTP 操作方法是:GET 和 POST。

    什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客户机与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用程 ...

  9. [Codeforces 1244C] The Football Season

    思维加枚举 题意 :足球赛,赢平所得到的分数分别为w和d,w>d,分别求赢平输的场数,输出一组即可,即x+y+z=n 且 xw+yd=p的一组解. 可以扩展公约数做,但由于注意到d和w<1 ...

  10. SecureCRT远程连接The remote system refused the connection问题

    今天用SecureCRT远程连接Linux(Centos 7)时,连不上,报错The remote system refused the connection.于是就百度,首先查看sshd服务有没有启 ...