实验4 宏指令及子程序设计实验

从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。

要求:

1)在屏幕上显示字符串提示信息的功能由宏指令DSTRING实现;

2)将键盘输入的十进制数转换成二进制数由子程序DTOB实现;

3)在N个无符号字节型二进制数中找出最大数的功能由子程序FMAX实现;

4)将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的功能由子程序BTOAD实现。

COUNT EQU 10

DATA SEGMENT

NUM DB 10  DUP(?)

IBUF DB 7,0,6 DUP(?)

OBUF DB 6 DUP(?)

INFOR1 DB "Please input 10 numbers(<256):",0AH,0DH,'$'

INFOR2 DB "The max found in the 10 numbers is $"

INFOR3 DB 0AH,0DH,'$'

DATA ENDS

STACK SEGMENT stack

DATA2 DW 40 DUP(?)

TOP EQU LENGTH DATA2

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK

START: MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV AX,TOP

MOV SP,AX

DSTRING MACRO STRING

PUSH DX

PUSH AX

MOV DX,OFFSET STRING

MOV AH,09H

INT 21H

POP AX

POP DX

ENDM

DSTRING INFOR1

MOV BX,OFFSET NUM

MOV CX,COUNT

LOOP1: CALL DTOB

DSTRING INFOR3

MOV [BX],AL

INC BX

             ;

LOOP LOOP1

MOV AX,OFFSET NUM

PUSH AX

MOV CX,COUNT

PUSH CX

CALL FMAX

DSTRING INFOR2

CALL BTOAD

MOV AH,4CH

INT 21H

FMAX PROC

PUSH CX            ;

PUSH SI            ;

MOV AL,NUM

MOV SI,OFFSET NUM

MOV CX,9

ONCEMORE:

INC SI

CMP AL,[SI]

JAE NOCHANGE

XCHG AL,[SI]

NOCHANGE:     

        DEC CX

JNE ONCEMORE   

MOV AH,0

POP SI            ;

POP CX             ;

RET

FMAX ENDP

BTOAD PROC                               ;子程序,将最大数在屏幕上显示

PUSH BX

PUSH CX

PUSH DX

MOV BX,OFFSET OBUF+5

MOV BYTE PTR[BX],'$'

MOV CX,10

LOOP2: MOV DX,0

DIV CX

ADD DL,30H

DEC BX

MOV [BX],DL

OR AX,AX

JNZ LOOP2

MOV DX,BX

 ;MOV DL,0AH

 ;MOV AH,02H

 ;INT 21H

MOV AH,09H

INT 21H  

POP DX

POP CX

POP BX  

RET

BTOAD ENDP

DTOB PROC   ;子程序,从键盘输入一个小于256的数

PUSH CX     ;

PUSH DX     ;

PUSH SI     ;

MOV DX,OFFSET IBUF

MOV AH,0AH

INT 21H

MOV CL,IBUF+1

MOV CH,0

MOV SI,OFFSET IBUF+2

MOV AX,0

AGAIN: MOV DX,10

MUL DX

AND BYTE PTR[SI],0FH

ADD AL,[SI]

ADD AH,0

INC SI

LOOP AGAIN

POP SI        ;

POP DX        ;

POP CX        ;

RET

DTOB ENDP

CODE ENDS

END START

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/770547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的出租车计价器实验教学案例设计

摘 要 为了让学生加深单片机的理解&#xff0c;加强学生的单片机技术应用、实践动手、创新能力的培养&#xff0c;根据单片机课程设计教学情况精心设计了基于单片机的出租车计价器实验教学案例。本教学案例的基本原理是速度的检测&#xff0c;里程、价格的计算和显示。学生通…

Pylons 和 Flex 3

“Pylons” 和 “Flex 3” 是两个不同的技术&#xff0c;各自有着不同的背景和应用场景&#xff1a; Pylons Pylons 是一个 Python Web 框架&#xff0c;用于快速开发 Web 应用程序。它强调简单性、灵活性和可扩展性&#xff0c;以便开发人员能够快速构建和部署功能强大的 We…

如何在Linux上删除Systemd服务

Systemd是Linux 操作系统的系统和服务管理器&#xff0c;提供控制系统启动时启动哪些服务的标准流程。 有时&#xff0c;您可能出于各种原因需要删除systemd服务&#xff0c;例如不再需要、与其他服务冲突&#xff0c;或者您只是想清理系统。 Systemd使用单元文件来管理服务&…

【Linux】虚拟机安装 openEuler 24.03 X86_64

目录 一、概述 1.1 openEuler 覆盖全场景的创新平台 1.2 系统框架 1.3 平台框架 二、安装详细步骤 一、概述 1.1 openEuler 覆盖全场景的创新平台 openEuler 已支持 x86、Arm、SW64、RISC-V、LoongArch 多处理器架构&#xff0c;逐步扩展 PowerPC 等更多芯片架构支持&…

行车记录打不开:故障深度解析、恢复策略与预防指南

一、行车记录打不开的困境概述 行车记录仪&#xff0c;作为现代驾驶安全的重要辅助工具&#xff0c;不仅记录着每一次出行的点滴&#xff0c;更在关键时刻成为维护权益的关键证据。然而&#xff0c;当车主满怀期待地想要回顾或分享这些记录时&#xff0c;却遭遇了行车记录打不…

Tomcat服务部署安装

一、Tomcat基础 1.Tomcat简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;Tomcat虽然和Apache或者Nginx这些Web服务器一样&#xff0c;具有处理HTML页面的功能&#xff0c;然而由于其处理静态HTML的能力远不及Apache或者Nginx&#xff0c;所以Tomcat通常…

存储器类型介绍

存储器 ROM 我们一般把手机和电脑的硬盘当作ROM。ROM的全称是&#xff1a;Read Only Memery&#xff0c;只读存储器&#xff0c;就是只能读不能写的存储器。但是现在的ROM不仅可以读&#xff0c;还可以写数据&#xff0c;比如给手机下载APP&#xff0c;就是给手机上的ROM写数据…

《ClipCap》阅读笔记(上)

原文出处 [2111.09734] ClipCap: CLIP Prefix for Image Captioning (arxiv.org) 原文笔记 What ClipCap&#xff1a; CLIP Prefix for Image Captioning 一言以蔽之&#xff1a;使用 CLIP 编码作为标题的前缀&#xff0c;使用简单的映射网络&#xff0c;然后微调语言模型…

光伏电站数据采集方案(基于工业路由器部署)

​ 一、方案概述 本方案采用星创易联SR500工业路由器作为核心网关设备&#xff0c;实现对光伏电站现场数据的实时采集、安全传输和远程监控。SR500具备多接口、多功能、高可靠性等特点&#xff0c;能够满足光伏电站数据采集的各种需求。&#xff08;key-iot.com/iotlist/sr500…

完全理解C语言函数

文章目录 1.函数是什么2.C语言中的函数分类2.1 库函数2.1.1 如何使用库函数 2.2自定义函数 3.函数的参数3.1 实际参数&#xff08;实参&#xff09;3.2 形式参数&#xff08;形参&#xff09; 4.函数调用4.1传值调用4.2 传址调用4.3 练习 5.函数的嵌套调用和链式访问5.1 嵌套调…

LLMs之gpt_academic:gpt_academic的简介、安装和使用方法、案例应用之详细攻略

LLMs之gpt_academic&#xff1a;gpt_academic的简介、安装和使用方法、案例应用之详细攻略 目录 gpt_academic的简介 1、版本更新历史 版本: 1、新增功能及其描述 新界面&#xff08;修改config.py中的LAYOUT选项即可实现“左右布局”和“上下布局”的切换&#xff09; 所…

【代码随想录】【算法训练营】【第57天】 [卡码99]岛屿数量 [卡码100]岛屿的最大面积

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 57&#xff0c;周三&#xff0c;再ding一下~ 题目详情 [卡码99] 岛屿数量 题目描述 卡码99 岛屿数量 LeetCode类似题目200 岛屿数量 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#…

STM32MP135裸机编程:使用软件触发硬件复位

0 参考资料 STM32MP13xx参考手册.pdf 1 使用寄存器实现软件复位 1.1 复位电路概述 重点关注下面标红的路线&#xff1a; 通过这条路线可以清楚看到&#xff0c;我们可以通过设置RCC_MP_GRSTCSETR寄存器让RPCTL&#xff08;复位脉冲控制器&#xff09;给NRST&#xff08;硬件复…

Vue组件如何“传话”?这里有个小秘诀!

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-组件通信 目录 Vue组件通信 &#xff08;1&#xff09; props / $emit 1. 父组件向子组件传…

线段树知识总结

线段树这个东西&#xff0c;这次是第二次学习&#xff0c;怎么说呢&#xff0c;感觉理解还是不是特别的透彻&#xff0c;因此&#xff0c;在后面彻底完学习之后这个东西再改成公开 线段树概念引入 线段树是一种数据结构&#xff0c;其并不算是一种算法&#xff0c;而是一种减…

8.12 矢量图层面要素单一符号使用十五(栅格线渲染边界)

前言 本章介绍矢量图层线要素单一符号中标记符号渲染边界&#xff08;Outline: Marker line&#xff09;的使用说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 栅格线渲染边界&#xff08;Outline: Raster Line&#xff09; Outline系列只画边界&#xf…

【代码随想录】【算法训练营】【第58天】 [卡码101]孤岛的总面积 [卡码102]沉没孤岛 [卡码103]水流问题 [卡码104]建造最大岛屿

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 58&#xff0c;周四&#xff0c;ding~ 题目详情 [卡码101] 孤岛的总面积 题目描述 卡码101 孤岛的总面积 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 […

mac外接显示屏,切换程序坞和启动台在哪个屏幕显示,最实用教程

程序坞和启动项是同步的 首先&#xff0c;程序坞和展开启动项是同步出现在同一个屏幕的&#xff0c;所以只需要把程序坞“呼唤”到指定的显示器就行。 无需设置&#xff0c;动对了鼠标就行 无所谓哪个是主屏&#xff0c;设置中都没有切换程序坞位置的选项&#xff0c; 想要…

vue单独部署到宝塔教程

配置反向代理 注意:如果目标网站是https则写https否则写http 2.关于解决部署后无法刷新,直接报错404 location / { try_files $uri $uri/ /index.html; }

代码随想录算法训练营第四十三天| 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、 123.买卖股票的最佳时机III

121. 买卖股票的最佳时机 题目链接&#xff1a;121. 买卖股票的最佳时机 文档讲解&#xff1a;代码随想录 状态&#xff1a;做出来了 贪心思路&#xff1a; 因为股票就买卖一次&#xff0c;那么贪心的想法很自然就是取最左最小值&#xff0c;取最右最大值&#xff0c;那么得到的…