我在学习emu8086,你能帮我设计一个程序实现如下要求吗,从PC机系统中断向量表的占用情况可见,42H~4FH是系统未使用的中断向量,可利用它们开发用户自己软中断程序。 (1)实验要求利用47H号中断将一组字符转换成16进制数码,并在屏幕上显示出来。(必做) (2)编程求出一系列数据中的最大值、最小值,并送屏幕显示。要求:①将求最大值和最小值程序的程序段编写为46H号软中断,利用46H号中断调用实现求最大值和最小值功能;②将送屏幕显示用子程序实现。(选做)

时间: 2023-07-16 22:13:06 浏览: 21
当然可以!以下是实现要求的程序: ``` ; 程序开始 assume cs:code, ds:data data segment buffer db 16 dup (?) ; 存储输入的字符 numList db 10, 20, 30, 40, 50 ; 待处理的数据列表 maxNum db 0 ; 最大值 minNum db 0 ; 最小值 data ends code segment start: mov ax, data mov ds, ax ; 初始化数据段寄存器 ; 将47H号中断向量设置为当前程序的入口地址 mov dx, offset convert mov ax, seg convert mov es, ax mov ax, 0047h mov word ptr es:[ax*4], dx ; 将46H号中断向量设置为当前程序的入口地址 mov dx, offset findMinAndMax mov ax, seg findMinAndMax mov es, ax mov ax, 0046h mov word ptr es:[ax*4], dx ; 调用输入函数将字符读入 buffer 数组 call input ; 调用 47H 号中断将 buffer 数组中的字符转换成 16 进制数字 mov ah, 47h int 47h ; 调用 46H 号中断求出最大值和最小值 mov ah, 46h int 46h ; 显示结果 call display mov ax, 4c00h ; 程序结束 int 21h ; 47H 号软中断,将字符转换成16进制数码 convert: push ax ; 保存寄存器 push bx push cx push dx push si xor si, si ; 初始化索引 mov cx, 16 ; 循环 16 次,处理 buffer 数组中的每个字符 loop1: mov al, buffer[si] ; 获取 buffer 数组中的字符 cmp al, 30h ; 判断字符是否为数字 jb skip ; 如果不是数字,则跳过 cmp al, 39h ; 判断字符是否为数字 ja skip ; 如果不是数字,则跳过 sub al, 30h ; 将字符转换成数字 mov bl, al ; 将数字保存到 bl 中 shl al, 4 ; 将数字左移 4 位 and al, 0F0h ; 将高 4 位清零 or al, bl ; 将低 4 位和高 4 位合并 mov buffer[si], al ; 将转换后的数字保存回 buffer 数组 skip: inc si ; 索引加 1 loop loop1 ; 循环 pop si ; 恢复寄存器 pop dx pop cx pop bx pop ax iret ; 返回 ; 46H 号软中断,求出一系列数据中的最大值、最小值 findMinAndMax: push ax ; 保存寄存器 push bx push cx push dx push si mov maxNum, numList ; 初始化最大值为第一个数 mov minNum, numList ; 初始化最小值为第一个数 xor si, si ; 初始化索引 loop2: mov al, numList[si] ; 获取 numList 数组中的数 cmp al, maxNum ; 判断是否大于当前最大值 jle notMax ; 如果不大于,则跳过 mov maxNum, al ; 更新最大值 jmp nextNum notMax: cmp al, minNum ; 判断是否小于当前最小值 jge nextNum ; 如果不小于,则跳过 mov minNum, al ; 更新最小值 nextNum: inc si ; 索引加 1 cmp si, 5 ; 判断是否处理完所有的数 jl loop2 ; 如果没有处理完,则继续循环 pop si ; 恢复寄存器 pop dx pop cx pop bx pop ax iret ; 返回 ; 显示结果的子程序 display: ; 显示转换后的数字 mov ah, 02h ; 调用中断 21H 的 02H 功能 mov cx, 16 ; 循环 16 次,显示 buffer 数组中的每个字符 mov si, offset buffer ; 初始化索引 loop3: mov dl, buffer[si] ; 获取 buffer 数组中的字符 mov ah, 02h ; 调用中断 21H 的 02H 功能 int 21h ; 显示字符 inc si ; 索引加 1 loop loop3 ; 循环 ; 显示最大值和最小值 mov ah, 09h ; 调用中断 21H 的 09H 功能 mov dx, offset maxMsg ; 显示最大值的提示信息 int 21h mov ah, 02h ; 调用中断 21H 的 02H 功能 mov dl, maxNum ; 显示最大值 add dl, 30h ; 将数字转换成字符 int 21h ; 显示字符 mov dl, 0Ah ; 换行 int 21h ; 显示字符 mov dl, 0Dh ; 回车 int 21h ; 显示字符 mov ah, 09h ; 调用中断 21H 的 09H 功能 mov dx, offset minMsg ; 显示最小值的提示信息 int 21h mov ah, 02h ; 调用中断 21H 的 02H 功能 mov dl, minNum ; 显示最小值 add dl, 30h ; 将数字转换成字符 int 21h ; 显示字符 mov dl, 0Ah ; 换行 int 21h ; 显示字符 mov dl, 0Dh ; 回车 int 21h ; 显示字符 ret ; 返回 ; 调用中断 21H 的 01H 功能,读入一个字符 input: mov ah, 01h ; 调用中断 21H 的 01H 功能 int 21h ; 读入一个字符 mov buffer, al ; 将读入的字符保存到 buffer 数组 ret ; 返回 ; 显示最大值的提示信息 maxMsg db 'The maximum number is: $' ; 显示最小值的提示信息 minMsg db 'The minimum number is: $' code ends end start ``` 希望这个程序对你有所帮助!

最新推荐

微机原理Emu8086仿真软件实验讲义.doc

微机原理Emu8086仿真软件实验讲义是学习计算机方面的资源,《微机原理》是一门专业基础课程,它的主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。...

新能源汽车行业专题报告:电动智能化的自主可控与新动能.pdf

新能源汽车行业专题报告:电动智能化的自主可控与新动能.pdf

区域销售额统计报表.xlsx

区域销售额统计报表.xlsx

固定资产移转表.xlsx

固定资产移转表.xlsx

深入浅出Hadoop Mahout数据挖掘实战 第06课-Mahout数据挖掘工具(6) 共9页.pptx

【课程大纲】 第01课-Mahout数据挖掘工具(1) 共9页 第02课-Mahout数据挖掘工具(2) 共9页 第03课-Mahout数据挖掘工具(3) 共12页 第04课-Mahout数据挖掘工具(4) 共9页 第05课-Mahout数据挖掘工具(5) 共11页 第06课-Mahout数据挖掘工具(6) 共9页 第07课-Mahout数据挖掘工具(7) 共11页 第08课-Mahout数据挖掘工具(8) 共14页 第09课-Mahout数据挖掘工具(9) 共12页 第10课-Mahout数据挖掘工具(10) 共14页 第11课-Hadoop综合实战-文本挖掘项目(1) 共11页 第12课-Hadoop综合实战-文本挖掘项目(2) 共12页 第13课-Hadoop综合实战-文本挖掘项目(3) 共11页 第14课-Hadoop综合实战-文本挖掘项目(4) 共20页 第15课-Hadoop综合实战-文本挖掘项目(5) 共10页 第16课-Hadoop综合实战-文本挖掘项目(6) 共12页 第17课-Hadoop综合实战-文本挖掘项目(7) 共11页

基于51单片机的usb键盘设计与实现(1).doc

基于51单片机的usb键盘设计与实现(1).doc

"海洋环境知识提取与表示:专用导航应用体系结构建模"

对海洋环境知识提取和表示的贡献引用此版本:迪厄多娜·察查。对海洋环境知识提取和表示的贡献:提出了一个专门用于导航应用的体系结构。建模和模拟。西布列塔尼大学-布雷斯特,2014年。法语。NNT:2014BRES0118。电话:02148222HAL ID:电话:02148222https://theses.hal.science/tel-02148222提交日期:2019年HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire论文/西布列塔尼大学由布列塔尼欧洲大学盖章要获得标题西布列塔尼大学博士(博士)专业:计算机科学海洋科学博士学院对海洋环境知识的提取和表示的贡献体系结构的建议专用于应用程序导航。提交人迪厄多内·察察在联合研究单位编制(EA编号3634)海军学院

react中antd组件库里有个 rangepicker 我需要默认显示的当前月1号到最后一号的数据 要求选择不同月的时候 开始时间为一号 结束时间为选定的那个月的最后一号

你可以使用 RangePicker 的 defaultValue 属性来设置默认值。具体来说,你可以使用 moment.js 库来获取当前月份和最后一天的日期,然后将它们设置为 RangePicker 的 defaultValue。当用户选择不同的月份时,你可以在 onChange 回调中获取用户选择的月份,然后使用 moment.js 计算出该月份的第一天和最后一天,更新 RangePicker 的 value 属性。 以下是示例代码: ```jsx import { useState } from 'react'; import { DatePicker } from 'antd';

基于plc的楼宇恒压供水系统学位论文.doc

基于plc的楼宇恒压供水系统学位论文.doc

"用于对齐和识别的3D模型计算机视觉与模式识别"

表示用于对齐和识别的3D模型马蒂厄·奥布里引用此版本:马蒂厄·奥布里表示用于对齐和识别的3D模型计算机视觉与模式识别[cs.CV].巴黎高等师范学校,2015年。英语NNT:2015ENSU0006。电话:01160300v2HAL Id:tel-01160300https://theses.hal.science/tel-01160300v22018年4月11日提交HAL是一个多学科的开放获取档案馆,用于存放和传播科学研究文件,无论它们是否已这些文件可能来自法国或国外的教学和研究机构,或来自公共或私人研究中心。L’archive ouverte pluridisciplinaire博士之路博士之路博士之路在获得等级时,DOCTEURDE L'ÉCOLE NORMALE SUPERIEURE博士学校ED 386:巴黎中心数学科学Discipline ou spécialité:InformatiquePrésentée et soutenue par:马蒂厄·奥布里le8 may 2015滴度表示用于对齐和识别的Unité derechercheThèse dirigée par陪审团成员équipe WILLOW(CNRS/ENS/INRIA UMR 8548)慕尼黑工业大学(TU Munich�