实验三 代码转换程序设计
北京邮电大学微机原理软件实验报告

信息与通信工程学院微机原理软件实验报告班级:姓名:学号:班内序号:时间:微机原理软件实验·报告实验一DEBUG 的使用一、实验目的1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG 调试程序的方法。
二、实验内容1. 用编辑软件,输入以下汇编语言源程序:DAT SEGMENTA DB 20 ;(自定)B DB 15 ;(自定)Y DB 3 DUP (0)Z DB 0, 0DAT ENDSSTA SEGMENT STACKDW 50 DUP (?)STA ENDSCOD SEGMENTASSUME CS: COD, DS: DATSTAR PROC FARPUSH DSXOR AX, AXPUSH AXMOV AX, DATMOV DS, AXMOV AX, STAMOV SS, AXMOV AL, AMOV Z, ALMOV Z+1, ALCALL SUB1MOV AL,B微机原理软件实验·报告MOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,AMOV Z,ALMOV AL,BMOV Z+1,ALCALL SUB1ADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSTAR ENDPSUB1 PROCMOV AL, ZMOV AH, Z+1MUL AHADD WORD PTR Y, AXADC BYTE PTR[Y+2], 0RETSUB1 ENDPCOD ENDSEND STAR2. 通过编译,连接形成可执行文件。
3. 用DEBUG 将可执行文件调入,并进行调试。
1) 用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址。
2) 用U 命令对目标代码反汇编,观察反汇编后的结果。
注意发现源程序的起始位置,并记录这个起始地址。
3) 用T 命令作单步跟踪调试。
比较每条指令执行后的结果和原来的理解是否一致,得出程序运行的结果:它们是写在什么单元,具体内容是什么;并判断结果是否正确。
代码转换显示实验报告(3篇)

第1篇一、实验背景随着计算机科学和软件工程的发展,代码转换在软件复用、程序迁移、代码优化等方面发挥着重要作用。
代码转换是指将一种编程语言的代码转换为另一种编程语言的代码,以便在不同的平台、环境和需求下使用。
本实验旨在通过实现一个简单的代码转换器,将一种编程语言的代码转换为另一种编程语言的代码,并展示其转换效果。
二、实验目的1. 理解代码转换的基本原理和流程。
2. 掌握一种编程语言的语法规则和结构。
3. 学习如何编写一个简单的代码转换器。
4. 分析和评估代码转换的效果。
三、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm四、实验内容1. 代码转换器设计本实验设计的代码转换器主要功能是将Python代码转换为Java代码。
以下是代码转换器的基本结构:- 输入:用户输入Python代码。
- 分析:解析Python代码,提取语法元素。
- 转换:根据语法元素生成对应的Java代码。
- 输出:展示转换后的Java代码。
2. 实现步骤2.1 Python代码解析使用Python内置的`ast`模块对输入的Python代码进行解析,提取出代码中的语法元素,如函数、变量、表达式等。
```pythonimport astdef parse_python_code(code):tree = ast.parse(code)return tree```2.2 语法元素转换根据解析得到的语法元素,将其转换为对应的Java代码。
以下是一个简单的示例:```pythondef convert_to_java(node):if isinstance(node, ast.FunctionDef):return f"public static void {}(){{\n{convert_to_java(node.body)}\n}}"elif isinstance(node, ast.Num):return str(node.n)elif isinstance(node, ast.Str):return f'"{node.s}"'... 其他语法元素转换else:return ""```2.3 代码生成将转换后的Java代码片段拼接成完整的Java程序。
代码转换程序

的部分结果*2(采用十进制加法)
SAL
DX,1 ;移出最高位
ADC AL,0 ;部分和加下一位的值
LOOP BTOBCD1
POP CX
;恢复现场
RET
BTOBCD ENDP
<>
汇编语言程序设计
在计算机中表示十进制数一般采用8421的BCD编码,分为压缩 的BCD码和非压缩的BCD码,两者的不同在于表示的位数,一个字 节表示一位十进数为非压缩的BCD码;一个字节表示两位十进制数 是压缩的BCD码。而ASCII码对十进制数据0~9的编码是30H~39H。
<>
转换程序
⑴ ASCII码转换为非压缩BCD码 若ASCII存于AL中,使用指令AND AL,0FH,则AL成为非压缩的 BCD码。
RCL BX,1
LOOP BCD2
Байду номын сангаасADD AX,BX ;部分和+下一位十进制数
POP CX
LOOP BCD1
POP CX
;恢复现场
POP BX
RET
BCDTOB
ENDP
<>
1.3 二进制数转换为十进制数
转换原理:
(1)利用除法实现转换:(用于较小的二进制数的转换)
例如:将一个8位二进制数(<256)转换为十进制数。可将二进制数÷100, 商是十进制数的百位,余数再÷10,商是十位,余数为个位。
BTOBCD PROC NEAR
;保护现场
PUSH
XOR
XOR ;存储部分和结果
MOV ;转换16位二进制数
BTOBCD1:
ADD
DAA
XCHG
ADC
DAA
代码转换程序

《微机原理及接口》课程设计报告课题名称代码转换程序学院自动控制与机械工程学院专业班级姓名学号时间2011/12/31-2012/1/13目录微机原理课程设计任务书……………………………………代码转换程序课程设计报告…………………………………一.概述…………………………………………………………二.设计任务及预期目标和要求………………………………1.设计任务…………………………………………………….2.设计目的和要求…………………………………………….三.设计思想分析……………………………………………...四.程序设计……………………………………………………1.程序设计流程图…………………………………………….2.源程序代码………………………………………………….五.运行结果……………………………………………………六.课程设计总结报告………………………………………...1.课程设计中遇到的主要问题和解决方法………………….2.创新和得以之处…………………………………………….3.课程设计中的感想和心得体会…………………………….微机原理课程设计任务书一.课题题目:代码转换程序二.课题要求:在DOS环境中编程完成以下任务:完成一个字母或数制之间的转换程序,主程序分别具有5种可选择的子功能,按菜单提示,选择相应的字符分别进入相应的子功能,并按屏幕提示完成相应得输入,并显示结果.按“q”健退出。
可选择的子功能分别为:●实现小写字母向大写字母的转换●实现大写字母向小写字母的转换●实现二进制数向十六进制数的转换●实现十六进制数向二进制数的转换●实现十六进制数向十进制数的转换1.参考设计基本思路编程实现上述功能;2.设计说明书;包括设计思想,程序流程图和源程序三.设计基本思路:见课程设计指导书四.时间进度表五.考核方式六.补充说明1.设计题目必须调试成功,(生成的可执行文件必须运行并且能够实现题目实现的功能),考核时独立完成考核内容,若未完成没有成绩。
代码转换程序设计

课程设计题目代码转换程序设计学院自动化学院专业电气工程及其自动化班级姓名指导教师年月日课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目:代码转换程序设计要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.用汇编语言编写一个字母和数制之间的转换程序,设计出友好的交互界面;2.实现小写字母和大写字母之间的相互转换;实现十进制数和二进制数以及十六进制数和二进制数之间相互转换;实现十进制数和八进制数以及二进制数和八进制数之间相互转换;实现十进制数和十六进制数以及八进制数和十六进制数之间相互转换;3.撰写课程设计说明书。
内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:12月28日---12月28日查阅资料及方案设计12月29日---1月2日编程1月3日-----1月7日调试程序1月8日-----1月9日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (2)1 代码转换程序设计 (2)1.1 系统总体分析 (2)1.2 系统总体流程图及其说明 (2)2 详细设置 (4)2.1 主模块及子模块说明 (4)2.2 各模块详细设计及流程图 (5)2.2.1 主模块 (5)2.2.2 十进制数转换为二进制数 (6)2.2.3 二进制数转换为十进制数 (8)2.2.4 二进制数转换为十六进制数 (11)2.2.5 十六进制数转换为二进制数 (13)3 程序调试 (177)3.1 运行界面分析 (17)3.2 算法的分析 (18)3.3 调试过程及分析 (19)4 心得体会................................................................................................... 错误!未定义书签。
代码转换(大小写字母转换)

北华航天工业学院课程设计报告(论文)设计课题:代码转换大小写字母转换专业班级:电子信息工程学生姓名:指导教师:设计时间: 2010-12-16北华航天工业学院电子工程系微机原理课程设计任务书指导教师:教研室主任:年月日内容摘要在课程设计之前,具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法是必不可少的。
因此原理部分重新温习并整理了相关知识。
课程设计要求进行大小写字母的转换。
其实字母大小写的区别在于他们的ASCII码范围,它们之间的转换其实就是加减相应的ASCII码值。
在判断输入的字母是大写的还是小写的(即判断输入符号ASCII码在41H~5AH还是在61H~7AH内)之后,决定判断是加上还是减去ASCII码值。
关键词:汇编代码转换大小写目录一、概述 (1)二、方案设计与论证 (1)1.汇编语言基础 (1)2.方案设计 (2)三、程序设计 (3)1.程序设计流程图 (3)2.程序代码 (4)四、运行结果 (5)五、心得体会 (6)六、参考文献 (6)一、概述:在计算机系统中有多种数制和编码,常用的数制有二进制、八进制以及十六进制,常用的代码有BCD码、ASCll码和七段显示码等。
这些数制和编码根据其作用的不同,在存储形式上也有差异。
在实际应用中,它们也因使用的要求不同而有所差异。
在配备操作系统管理程序的计算机中,有些代码转换程序已在系统管理软件中编好。
还有些代码转换需要根据使用要求通过编程完成。
因此,代码转换是非数据处理中最常见的情况。
二、方案设计:1、汇编语言基础汇编:计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把源程序译成机器语言程序(目标程序)才能执行,这一“翻译”工作称为汇编。
汇编有人工汇编和计算机汇编两种方法。
汇编语言是面向机器的,每一类计算机分别有自己的汇编语言。
汇编语言占用的内存单元少,执行效率高,广泛应用于工业过程控制与检测等场合。
实验三 数据转换实验
实验三数据转换实验一、实验目的掌握数据格式转换程序编写方法。
二、实验原理及实验内容将2字节二进制数转换成3字节压缩BCD数(5位十进制数)。
编写并调试一个二翻十程序,其功能为将40H,50H两单元中的二进制数转换为十进制数,并将转换结果存放在R4,R5,R6单元中。
将二进制转换成十进制的方法有多种,此实验采用左移二进制数,加倍十进制数并加入二进制数的移出位的方法来实现。
具体算法是,先将存放十进制数的3单元清0,再将二进制数左移1位,最高位移入进位。
然后,十进制数存放单元中的BCD数按BCD 数的规则加倍并加入进位。
如此连续移位、加倍、校正,直到所有的二进制数位均移出为止。
下面是程序流程图。
BP1BP2调试方法:⑴断点设在BP1,程序运行至BP1,检查40H、50H内容是否与输入值正确对应。
⑵断点设在BP2,程序运行至BP2,检查R4、R5、R6 内容是否为二进制所对应的十进制转换结果。
⑶程序连续运行,若有错误应改用单步或断点分段调试程序,排除软件错误,直至正确为止。
⑷改动40H、50H中的内容。
连续运行观察结果正确与否。
三、参考程序汇编程序:ORG 0000HAJMP MAINMAIN:MOV 40H,#60H /*将数据送到RAM的40H单元*/MOV 50H,#3CH /*将数据送到RAM的50H单元*/CLR A/*清累加器*/MOV R4,A/*存放转换后数据的寄存器R4,R5,R6*/MOV R5,AMOV R6,AMOV R7,#16BITBCD:CLR C /*C清零*/MOV A,50H /*将50H中的内容左移一位*/RLC AMOV 50H,AMOV A,40H /*将40H中的内容左移一位*/RLC AMOV 40H,AMOV A,R6 /*(R6)+(R6)+(C),和进行二-十进制调整,调整后的BCD码送R6中*/ADDC A,R6DA AMOV R6,AMOV A,R5 /*(R5)+(R5)+(C),和进行二-十进制调整,调整后的BCD码送R5中*/ADDC A,R5DA AMOV R5,AMOV A,R4 /*(R4)+(R4)+(C),和进行二-十进制调整,调整后的BCD码送R4中*/ADDC A,R4DA AMOV R4,ADJNZ R7,BITBCD /*判断循环完没*/END假设2字节二进制数存放在内部RAM0x35和0x36单元中(0x35放高位),转换结果存入0x37~0x39这3个单元中。
课程设计报告代码转换
代码转换第一章设计要求及思路1.1设计要求按屏幕提示要求输入,并进行相关进制之间的相互转换,从屏幕上获得正确结果。
1.2 设计思路整个程序的实现可由若干个模块组成,其中有一个主模块,可以调用其他各6个模块,模块功能划分为:模块2实现小写字母向大写字母的转换,主要利用小写字母比大写字母大20H的关系;模块3实现大写字母向小写字母的转换,与2类似;模块4实现二进制数向十六进制数的转换,可以利用移位指令来实现;模块5实现十六进制数向二进制数的转换,也可采用移位指令实现;模块6实现十六进制数向十进制数的转换,首先将十六进制数转换成二进制,然后再实现二进制向十进制数的转换。
第二章软件设计2.1 程序设计流程图程序流程图如图2-1所示:2.2 各模块功能的实现2.2.1 转换方式的选择显示提示语句:“请你选择需要的方式:1.大小写转换2.十六进制转换3.二进制转换”该语句的实现通过比较指令CMP和条件转移指令JXX来实现,用在键盘上输入的字符所对应的ASCII码和1,2,3所对应的ASCII码依次比较再通过JXX来判断是否该跳转,从而实现选择,另也可以通过IFXX语句实现选择功能。
转换方式选择程序的主要语句如下所示:MOV AH,01HINT 21H;DOS系统功能调用功能号01H为键入字符并回显CMP AL,31H;1的ASCII码为31HJE LOP1CMP AL,32H ; 2的ASCII码为32HJE LOP2CMP AL,33H ;3的ASCII码为33HJE LOP3;2.2.2 大小写转换通过查ASCII码我们可以知道大写字母和小写字母之间的ASCII码相差20H,因此我们可以通过向输入的字母转换成其对应的ASCII码,再通过加减20H实现大小写字母之间的相互转换。
如果输入的为大写字母则在其ASCII码的基础上加上20H即可以实现转换成小写字母,其程序段的主要语句如下所示:MOV AH,01HINT 21HMOV BL,ALADD BL,20HMOV DL,BLMOV AH,02H;系统功能调用功能号02H为显示DL中ASCII码对应的字符INT 21H如果输入的是小写字母,则在原ASCII码的基础上减去20H即可转换出所对应的大写字母,主要程序段如下所示:MOV AH,01HINT 21HMOV BL,ALSUB BL,20HMOV DL,BLMOV AH,02H;系统功能调用功能号02H为显示DL中ASCII码对应的字符INT 21H2.2.3 十六进制的转换根据要求我们需要实现十六进制像二进制和十进制的转换,程序要有明确的提示是向二进制转换还是向十进制转换并进行相应的选择,所以必须有选择语句的出现,然后根据所选的内容实现相应功能的调用。
代码转换实验报告
一、实验背景随着计算机技术的飞速发展,编程语言在各个领域得到了广泛的应用。
然而,不同的编程语言在语法、语义和功能上存在差异,使得程序员在编写程序时需要不断学习和适应新的语言。
为了提高编程效率和减少学习成本,代码转换技术应运而生。
代码转换技术可以将一种编程语言的代码自动或半自动地转换为另一种编程语言的代码,从而实现不同编程语言之间的代码共享和复用。
本实验旨在通过代码转换技术,实现C语言代码向Java语言的转换,并验证转换效果。
二、实验目的1. 熟悉代码转换技术的基本原理和方法。
2. 掌握C语言和Java语言的基本语法和特性。
3. 实现C语言代码向Java语言的转换,并验证转换效果。
4. 分析代码转换过程中可能存在的问题,并提出相应的解决方案。
三、实验内容1. 熟悉C语言和Java语言的基本语法和特性。
2. 分析C语言代码,确定其功能和结构。
3. 根据C语言代码的功能和结构,设计相应的Java代码。
4. 实现C语言代码向Java语言的转换,并进行验证。
四、实验步骤1. 选择一个简单的C语言程序作为实验对象。
2. 分析C语言程序的语法和功能,确定其结构。
3. 根据C语言程序的结构,设计相应的Java代码。
4. 实现C语言代码向Java语言的转换,包括以下步骤:a. 定义Java类和成员变量;b. 实现C语言程序中的函数,转换为Java方法;c. 调整C语言程序中的控制语句,转换为Java的控制语句;d. 转换C语言程序中的输入输出操作,转换为Java的输入输出操作;5. 编译Java代码,运行程序,验证转换效果。
五、实验结果与分析1. 实验结果本实验以一个简单的C语言程序为例,实现了其向Java语言的转换。
以下是C 语言和Java语言的代码对比:C语言代码:```c#include <stdio.h>int main() {int a = 10, b = 20;printf("The sum of a and b is: %d\n", a + b);return 0;}```Java语言代码:```javapublic class Sum {public static void main(String[] args) {int a = 10, b = 20;System.out.println("The sum of a and b is: " + (a + b));}}```2. 实验分析通过对比C语言和Java语言的代码,我们可以发现以下差异:a. 语法差异:C语言使用分号作为语句结束符,而Java使用大括号。
北理工大学计算机实验三 字符编码与信息交换
北理工大学计算机实验三字符编码与信息交换----d6624366-6eab-11ec-b02a-7cb59b590d7d北理工大学计算机实验三字符编码与信息交换实验报告实验名称:学生编号姓名班级实验时间年月日实验报告表3-1西文字符显示过程编码记录表输入字符5a,<ASCII码(十进制数)536560内存信息(二进制)0011010101000000111100显示字体码(十六进制)0FE008000800000008001400000060018实验报告表3-2汉字显示过程代码记录表编码类型汉字输入法汉字输入码机内码(十六进制)国标码(十六进制)区位码(十六进制)字形码(十六进制)输入字符1:“字”全拼输入zid7d6h5756373600080000000600000001c0000000c0000000c0000400800c07fffffe0c00001 c0c0000101c000020380001c01输入字符2:“形状”双输入XD0BEH503E301E0000000000000000000000000002000100000703C1FFF803018300600018300C 001830183018001830100018302000018304000FFC000000038000000700000000000000000000 0000000000000000E7FFFFFFF0000600000000600000000600000000600000000600000000fe000000FC0000001C0000018308040183201E0183701C3FFFFFFFFF8380010060018300C00183 08030003030400030318060303202203000E0630301C060300380403000000E0630300C0080308 01C060300380403000C008030801001C3000FFFFFFFF380010060018300C008030000C000实验报告表3-3不同字体的字体代码“字”的字形码字体(十六进制表示)宋体00080000000600000001c0000000c0000000c0000400800c二“形”的字形码(十六进制表示)0000000000000000000020210000703c1fff80300183006007fffffe0c00001c0c0000101c0000 20380001c001ffffc0000003800000070000000c000000180000006000000060040000600e7fff ffff00006000000060000000600000006000000060000000600000006000000060000000600000 3fe000000fc0000001c000018300c001830180018301000183020001830400018308040183201e 0183701c3ffff83801830060018300c001830180018303000303040003031806030320210303000e0603001c0603003804030060040300c0080303801003060030030c00000030000000c000黑体00080000000600000001c0000000c0000000000000000000000020210000703c三0000c0000400800c07fffffe0c00001c0c0000101c000020380001c001ffffc000000380000007 0000000c000000180000006000000060040000600e7fffffff0000600000006000隶书1FF8030001830060018300C00183018001830100018302000018304000018308040183201E0183 701C3FF83801830060018300C0018301800183030003030400030318060320224。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV CH,AL;是则更新CH的值
INPUT
JUDGE
CMP AL,CL
JB K;
MOV CL,AL
JMP LOOP1
EXIT:PRESENT 0DH,0AH
MOV AH,09H
MOV DX,SEG STRING
MOV DS,DX
LEA DX,STRING
INT 21H
CMP CH,'0';判断最小数的符号是否为负(通过负数最高位是否被修改判断)
INT 21H
ILLEGAL PROC;显示不合法字符串
MOV AH,09H
MOV DX,SEG STRING1
MOபைடு நூலகம் DS,DX
LEA DX,STRING1
INT 21H
RET
ILLEGAL ENDP
CODE ENDS
END START
七、程序设计思路与总结
程序分为字符输入模块、字符显示模块、判断合法模块、以及主程序的比较模块。
CMP AL,'-';判断数的符号
JZ NEAR PTR NEGT;负数则转去NEGT处执行
JUDGE;判断数的合法性
CMP AL,BH;输入的值与最小正数的十位相比较
JNA NEXT;当前输入的值有可能比得到的最小数小
K: INPUT;把下一个不符合条件的字符读出
JMP NEAR PTR LOOP1
MOV CL,'0';CL中存放负的最小值的十位
MOV AH,09H
MOV DX,SEG STRING3
MOV DS,DX
LEA DX,STRING3
INT 21H
LOOP1: INPUT
CMP AL,20H
JZ LOOP1;循环找到第一个不是空格的字符
CMP AL,0DH;判断是否输入结束
JZ NEAR PTR RA
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START: MOV DX,SEG DATA
MOV DS,DX
MOV BH,9+'0';BH中存放正的最小值的十位,并将其转换为ASCII码
MOV BL,9+'0';BL中存放正的最小值的个位
MOV CH,'0';CH中存放负的最小值的十位
实验三代码转换程序设计
一.实验目的:
1.掌握几种最基本的代码转换方法;
2.运用子程序进行程序设计.
二.实验内容:
1.从键盘上输入若干两位十进制数,寻找其中的最小值,然后在屏幕上显示出来.
2.两个十进制数之间的分隔符,输入结束标志自定,但要在报告中说明.
3.对输入要有检错措施,以防止非法字符输入,并有适当的提示.
RA: JMP NEAR PTR EXIT
WRONG: CALL ILLEGAL
JMP NEAR PTR ENDD
NEXT: MOV BH,AL;判断当前输入的正数是否为最小数
INPUT
JUDGE
CMP AL,BL
JA K
MOV BL,AL
JMP NEAR PTR K
NEGT:INPUT
JUDGE
CMP AL,CH;判断当前输入的负数是否为最小负数
JNZ K1;不为0则说明最小数为负数
CMP CL,'0'
JNZ K1
PRESENT BH,BL;均不满足跳转条件说明最小数是正数,直接进行显示
JMP NEAR PTR ENDD
K1: MOV AH,02H;输出最小的负数
MOV DL,'-'
INT 21H
PRESENT CH,CL
JMP ENDD
ENDD: MOV AX,4C00H
采取逐字符判断,若检测到非法输入则立即停止输入。输入时优先判读空格,找到第一个不为空格的数判断其合法性,如果合法则认为它是最高位,和当前最小值的最高位比较,若比当前最小值的最高位大则直接丢弃,同时丢弃下一个低位字符,否则转入低位的比较。若输入的数比当前的数小,则更新最小值。循环判断直至输入结束。其中判断过程中之间按ASCII码判断,无需转换成十进制数。
STRING DB 'The min is:','$'
STRING1 DB 0DH,'Input illegal!','$'
STRING3 DB 'Please input number: ','$'
DATA ENDS
STACK SEGMENT 'STACK'
DB 100 DUP(?)
STACK ENDS
四.预习题:
1.如何将输入的两个字符(0 -- 9)变为十进制或二进制数?
答:将(高位ASCII码-‘0’)*10+低位ASCII码-‘0’即为对应10进制数。
将高位ASCII码-‘0’后左移一位保存,再左移两位,求两者之和,在加上低位ASCII码-‘0’则可通过移位转移成二进制数。
2.如何将选出的最小值(二进制或十进制)变为ASCII码再进行显示?
在拓展功能中,增加了负数的判断,主要是首字符的读取,如果是‘-’号不能认为是非法输入,因此要优先判断,每次读取一个数判断正负,用两个寄存器分别存储负数的最小值和正数的最小值。输出时通过判断负数的最小值是否为0来决定输出,成功实现功能。
CMP AL,'9'
JA WRONG
ENDM
PRESENT MACRO X,Y;显示两个字符
MOV AH,02H
MOV DL,X
INT 21H
MOV AH,02H
MOV DL,Y
INT 21H
ENDM
INPUT MACRO;从键盘读取字符
MOV AH,01H
INT 21H
ENDM
DATA SEGMENT
4.将整个程序分解为若干模块,分别用子程序实现.在报告中要给出模块层次图.
三、创新功能:
1、成功避免空格影响,在输入数据时,用户可以键入无限多用于分隔的空格,不会影响程序的输入,按回车结束一串待比较数的输入。
2、扩充了题目要求,将判断范围扩展到负数领域,在一串数中允许有负数输入,且可以输出最小数。
运行结果如下,可以看到,负数存在时仍可正常判断,以回车作为结束标志
答:可将两位数除10,对AL中的商+‘0’显示,AH中的余数+‘0’显示。
3.你觉得采用二进制运算还是十进制运算更适合于这个实验?
答:二进制运算。直接通过ASCII码高低位判断大小。
五、流程图:
六、代码分析
JUDGE MACRO;判断字符是否合法
CMP AL,'0'
JB WRONG;不合法转去wrong处执行