实验三 代码转换程序设计-推荐下载

合集下载

《Python程序设计》实验3---Python基本数据类型及分支结构实验报告

《Python程序设计》实验3---Python基本数据类型及分支结构实验报告

**大学数学与信息工程学院《Python程序设计》实验报告实验名称:实验3 Python基本数据类型及分支结构班级:姓名:,学号:实验地点:日期:《一、实验目的:[实验目的和要求]1、熟练掌握Python三种数字类型及其应用2、熟练判断条件表达式的真假3、熟练掌握Python分支结构二、实验环境:1、计算机,局域网,python 软件三、~四、实验内容和要求:(直接将实验步骤及截图写在题目下面,结果必须截图)1、复数z=-3+4j,用Python程序求得对应的实部和虚部并计算z的绝对值,并思考输出的绝对值代表什么含义2、请将下列数学表达式用Python程序写出来,并运算结果1)427345x+-⨯=代码:a=2**4 b=7。

c=3 d=4 e=5x=(a+b-c*d)/e print(x)2)2131677()(mod )/x =+⨯代码:>a=3**2 b=1 c=16 d=7x=(a+b)*(c%d)/7 print(x)3、编写程序,根据输入的长和宽,计算矩形的面积并输出。

要求:输入语句input 实现同步赋值。

、lw=input('请输入矩形的长和宽,以空格分隔:') length,width=map(float,()) s=length*widthprint("矩形面积为:",s)4、编写程序,用户输入一个三位以上的整数(如果不是三位数则提示输入错误),输出其百位以上的数字。

例如用户输入1234,则程序输出12。

(提示:使用整除运算。

)代码:a=eval(input('请输入一个三位以上的整数:'))!b=int(a/100)if(a<99):print('输入错误')else:print(b)------------------------------------------------------------------------------------------------------------------------------5、已知某课程的百分制分数mark ,将其转换为5分制(优、良、中、及格、不及格)的评定等级grade ,评定条件如下:(注意:不要存在冗余条件) 、908090=7080607060mark mark mark mark mark ≥⎧⎪≤<⎪⎪≤<⎨⎪≤<⎪⎪<⎩优良成绩等级中及格不及格代码:mark=eval(input('请输入你的分数:')) if mark>=90: print('优') elif 90>mark>=80: print('良') elif 80>mark>=70:、print('中') elif 70>mark>=60: print('及格') elif mark<60:print('不及格')6、-7、 (1)编写计算n的阶乘的程序,n由用户输入。

代码转换程序

代码转换程序

的部分结果*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

实验三选择结构程序设计

实验三选择结构程序设计

实验三选择结构程序设计程序设计是计算机科学中的核心技能之一,它涉及到使用编程语言来解决特定问题。

在程序设计中,选择结构是基本的控制流程之一,它允许程序根据不同的条件执行不同的代码块。

本实验旨在通过一系列练习,帮助学生理解和掌握选择结构程序设计的基本方法和技巧。

实验目的1. 理解选择结构在程序设计中的作用和重要性。

2. 掌握基本的选择结构语句,如`if`、`switch`等。

3. 学会使用选择结构解决实际问题。

4. 提高逻辑思维能力和编程实践能力。

实验环境- 编程软件:任意一种支持C/C++/Java等语言的IDE。

- 开发环境:Windows/Linux/MacOS均可。

实验内容1. 基础选择结构- 实验一:使用`if`语句实现一个简单的温度转换程序,将摄氏度转换为华氏度。

```c#include <stdio.h>int main() {float celsius, fahrenheit;printf("请输入摄氏度:");scanf("%f", &celsius);fahrenheit = (celsius * 9 / 5) + 32;printf("%.2f摄氏度等于%.2f华氏度\n", celsius, fahrenheit);return 0;}```- 实验二:使用`if...else`语句设计一个程序,根据输入的分数判断成绩等级。

```c#include <stdio.h>int main() {int score;printf("请输入成绩:");scanf("%d", &score);if (score >= 90) {printf("优秀\n");} else if (score >= 60) {printf("及格\n");} else {printf("不及格\n");}return 0;}```2. 多条件选择结构- 实验三:使用`switch`语句实现一个简单的菜单选择程序。

代码转换程序

代码转换程序

《微机原理及接口》课程设计报告课题名称代码转换程序学院自动控制与机械工程学院专业班级姓名学号时间2011/12/31-2012/1/13目录微机原理课程设计任务书……………………………………代码转换程序课程设计报告…………………………………一.概述…………………………………………………………二.设计任务及预期目标和要求………………………………1.设计任务…………………………………………………….2.设计目的和要求…………………………………………….三.设计思想分析……………………………………………...四.程序设计……………………………………………………1.程序设计流程图…………………………………………….2.源程序代码………………………………………………….五.运行结果……………………………………………………六.课程设计总结报告………………………………………...1.课程设计中遇到的主要问题和解决方法………………….2.创新和得以之处…………………………………………….3.课程设计中的感想和心得体会…………………………….微机原理课程设计任务书一.课题题目:代码转换程序二.课题要求:在DOS环境中编程完成以下任务:完成一个字母或数制之间的转换程序,主程序分别具有5种可选择的子功能,按菜单提示,选择相应的字符分别进入相应的子功能,并按屏幕提示完成相应得输入,并显示结果.按“q”健退出。

可选择的子功能分别为:●实现小写字母向大写字母的转换●实现大写字母向小写字母的转换●实现二进制数向十六进制数的转换●实现十六进制数向二进制数的转换●实现十六进制数向十进制数的转换1.参考设计基本思路编程实现上述功能;2.设计说明书;包括设计思想,程序流程图和源程序三.设计基本思路:见课程设计指导书四.时间进度表五.考核方式六.补充说明1.设计题目必须调试成功,(生成的可执行文件必须运行并且能够实现题目实现的功能),考核时独立完成考核内容,若未完成没有成绩。

代码转换(大小写字母转换)

代码转换(大小写字母转换)

北华航天工业学院课程设计报告(论文)设计课题:代码转换大小写字母转换专业班级:电子信息工程学生姓名:指导教师:设计时间: 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 十六进制的转换根据要求我们需要实现十六进制像二进制和十进制的转换,程序要有明确的提示是向二进制转换还是向十进制转换并进行相应的选择,所以必须有选择语句的出现,然后根据所选的内容实现相应功能的调用。

实验三 代码转换程序设计

实验三 代码转换程序设计
JB K
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

代码转换实验报告

代码转换实验报告

一、实验背景随着计算机技术的飞速发展,编程语言在各个领域得到了广泛的应用。

然而,不同的编程语言在语法、语义和功能上存在差异,使得程序员在编写程序时需要不断学习和适应新的语言。

为了提高编程效率和减少学习成本,代码转换技术应运而生。

代码转换技术可以将一种编程语言的代码自动或半自动地转换为另一种编程语言的代码,从而实现不同编程语言之间的代码共享和复用。

本实验旨在通过代码转换技术,实现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使用大括号。

汇编语言代码转换程序实验报告

汇编语言代码转换程序实验报告

课程设计说明书题目: 代码转换程序院系:专业班级:学号:学生姓名:指导教师:2010 年 12 月 31 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室2010年 12月 17安徽理工大学课程设计(论文)成绩评定表摘要本次课程设计的题目是代码转换,这是一个基于计算机和汇编环境的程序,主要就是通过完成这次设计,实现二进制,十进制,十六进制代码的转换,以及大小写字母之间的转换。

从而掌握不同进制数及编码相互转换的程序设计方法,知道将存储在内存单元中的数据以十六进制数、十进制数形式和二进制数形式显示在屏幕上的方法,加深对数码转换的理解。

而且学会用INT21功能实现人机对话掌握代码转换的基本方法。

该程序界面友好,能够通过键盘输入选择相应的转换,结果也能够比较直观的显示在我们眼前,具有一定的人机交互性。

关键词:代码,进制,大小写字母,转换,INT21,人机交互性目录1设计目的 (1)2概要设计 (2)2.1 系统总体分析 (2)2.2 主模块框图及说明 (2)3 详细设计 (4)3.1 主模块及子模块说明 (4)3.2 各模块详细设计 (4)4程序调试 (11)4.1 运行界面分析 (11)4.2算法的分析 (12)4.3 调试过程及分析 (13)5心得体会 (14)5.1 设计体会 (14)5.2 系统改进 (14)参考文献 (15)1设计目的在做本次课程设计之前,首先要了解设计的目的。

本次课程设计的题目是代码转换,这是一个基于计算机和汇编环境的程序,主要就是通过完成这次设计,实现二进制,十进制,十六进制代码的转换,以及大小写字母之间的转换。

从而掌握不同进制数及编码相互转换的程序设计方法,知道将存储在内存单元中的数据以十六进制数、十进制数形式和二进制数形式显示在屏幕上的方法,加深对数码转换的理解。

而且学会用INT21功能实现人机对话掌握代码转换的基本方法。

该程序界面友好,能够通过键盘输入选择相应的转换,结果也能够比较直观的显示在我们眼前,具有一定的人机交互性。

源码转化为补码实验报告(3篇)

源码转化为补码实验报告(3篇)

第1篇一、实验目的1. 理解并掌握源码和补码的概念。

2. 掌握源码转化为补码的原理和方法。

3. 能够熟练进行源码与补码之间的转换。

二、实验原理1. 源码:在计算机中,一个数的表示方法可以是它的实际数值,这种表示方法称为源码。

对于正数,源码就是它的二进制表示;对于负数,源码是其绝对值的二进制表示,符号位为1。

2. 补码:补码是一种用于表示有符号整数的编码方法。

对于正数,补码与源码相同;对于负数,补码是其绝对值的二进制表示取反加1。

3. 源码转化为补码的方法:(1)对于正数,补码与源码相同。

(2)对于负数,将绝对值的二进制表示取反加1。

三、实验器材1. 计算机2. 编程软件(如C语言、Python等)四、实验步骤1. 编写程序,输入一个整数,判断其正负。

2. 如果是正数,直接输出其源码和补码。

3. 如果是负数,将绝对值的二进制表示取反加1,得到补码。

4. 输出源码、补码及转换过程。

五、实验数据及结果以输入整数-10为例,进行源码转化为补码的实验。

1. 输入整数-10。

2. 判断-10为负数。

3. 计算-10的绝对值,即10。

4. 将10的二进制表示取反加1,得到补码。

5. 10的二进制表示为1010,取反为0101,加1为0110。

6. 因此,-10的源码为10010,补码为0110。

实验结果如下:源码:10010补码:0110六、实验总结1. 通过本次实验,我们掌握了源码和补码的概念,以及源码转化为补码的原理和方法。

2. 在实际编程中,了解源码与补码的转换对于理解计算机中的有符号整数运算具有重要意义。

3. 实验过程中,我们使用了编程软件进行源码与补码的转换,提高了编程能力。

4. 本次实验加深了我们对计算机中数值表示方法的理解,为后续学习计算机组成原理、操作系统等课程打下了基础。

七、实验拓展1. 编写程序,实现任意整数的源码与补码之间的转换。

2. 研究补码在计算机中的具体应用,如加减法运算。

3. 探究不同计算机体系结构中,源码与补码的表示方法。

实验三 代码转换

实验三 代码转换

电工电子实验中心实验报告课程名称:计算机硬件技术基础实验名称:代码转换姓名:学号:评定成绩:审阅教师:实验时间:2017.05.02南京航空航天大学一、实验目的要求1) 掌握 ASCII 码转换的基本方法。

2) 学会 INT21 功能调用, 掌握人机对话的设计方法。

3) 进一歩熟悉 Tddebug 调试环境和 Turbo Debugger 的使用。

二、实验任务从键盘输入小写字母(最多 20 个),以“.”号作为结束标志, 将其变换成相应的大写字母输岀在屏幕上。

三、实验代码CRLF MACROMOV DL, 0DHMOV AH, 02HINT 21HMOV DL, 0AH ;宏定义回车,换行MOV AH, 02HINT 21HENDMDATA SEGMENTMES1 DB 'PLEASE INPUT THE SMALL LETTER,ENDED WITH ".":$'MES2 DB 'THE CAPTAL LETTER IS:$'SMALL DB 50 ;?预留键盘输入缓冲区长度为50个DB 0 ;?预留实际键盘输入字符数的个数DB 50 DUP(0)CAPITAL DB 50 DUP('$') ;?预留大写字母缓冲区长度为50个DATA ENDSSTACK1 SEGMENT STACKDB 100 DUP (0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START PROC FARPUSH DSMOV AX, 0PUSH AXMOV AX, DATAMOV DS, AXMOV AH, 9LEA DX, MES1 ;输岀提示信息MES1INT 21HCRLF ;宏调用MOV AH, 0AHLEA DX, SMALL;接收小写字符串INT 21HCRLF ;宏调用MOV BX,2LABEL:MOV AL, SMALL[BX]CMP AL,'a'JL LABEL1CMP AL,'z'JG LABEL1MOV CAPITAL[BX-2], ALSUB CAPITAL[BX-2], 20HJMP LABEL2LABEL1:MOV CAPITAL[BX-2],ALLABEL2:INC BXCMP SMALL[BX],46JNE LABELKE: MOV AL,'$';大写字符串后加“$”MOV SMALL[BX], ALMOV DX, OFFSET MES2 ;?输岀提示信息MES2 MOV AH, 9INT 21HCRLF ;宏调用MOV DX, OFFSET CAPITALMOV AH, 9 ;?输岀大写字符串INT 21HRETSTART ENDPCODE ENDSEND START四、实验数据五、探究内容1) 若从键盘输入的字符非小写字母,其ASCII 码减去20H 后输出为无关字符,如何在程序中避免以上问题?在程序中,先做了判断是否非小写字符,如果是就过滤掉该字符,用空格占位六、实验讨论及心得体会宏定义的使用省去了许多重复的工作,简化了代码的书写,有利于在编程过程中保持清晰的思路。

实验3 最简单的C程序设计——顺序程序设计

实验3  最简单的C程序设计——顺序程序设计

实验3 最简单的C程序设计——顺序程序设计1.实验目的⑴掌握C语言中使用最多的一种语句——赋值语句的使用方法。

⑵掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。

⑶进一步掌握编写程序和调试程序的方法。

2.实验内容和步骤⑴通过下面的程序掌握各种格式转化符的正确使用方法。

①输入以下程序:#include <stdio.h>int main(){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61;b=62;c1='a';c2='b';d=3.56;e=-6.87;f=3157.890121;g=0.123456789;m=50000;n=-60000;p=32768;q=40000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%1.56f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q); }②运行此程序并分析结果。

解:运行时输出:③在此基础上,将程序第10—14行改为:c1=a;c2=b;f=3157.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=-60000;运行程序,分析结果。

解:运行时输出:④用sizeof运算符分别检测程序中各类型的数据占多少字节。

例如,int型变量a的字节数为sizeof(a)或sizeof(int),用printf函数语句输出各类型变量的长度(字节数)。

解:sizeof(int) = 4sizeof(float) = 4;sizeof(double) = 8;sizeof(char) = 1;char *p;sizeof(p) = 4;sizeof(long) = 4;sizeof(unsigned int) = 4;⑵设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

算术运算与代码转换程序设计

算术运算与代码转换程序设计

实验三算术运算与代码转换程序设计一、实验目的1)掌握算术运算程序的设计方法。

2)掌握代码转换程序的设计方法。

3)进一步掌握各种程序结构。

4)熟练掌握和使用用DEBUG调试程序。

二、实验内容1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。

2)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。

3)编写程序把从键盘输入的以回车为结束符的字符串中的空格去掉并按相反的顺序输出。

三实验代码、实验1DATA SEGMENTNUM1 DB 22H,33H,44H,55H,66H,77HNUM1L DB 6HNUM2 DB 22H,22H,22H,22HNUM2L DB 4HOUTCOME1 DB 10H DUP(0)OUTCOME2 DB 10H DUP(0)N DB 0HDATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATAMOV DS,AXMOV CH,0MOV SI,OFFSET NUM1MOV DI,OFFSET NUM2MOV AH,NUM1LMOV AL,NUM2LCMP AH,ALJAE CHAXCHG SI,DIXCHG AH,ALCHA:SUB AH,ALMOV CL,ALCLCMOV BX,OFFSET OUTCOME1LOP1:MOV AL,[DI]PUSH CXMOV CL,[SI]ADC CL,ALMOV [BX],CLINC BXINC SIINC DIPOP CXLOOP LOP1MOV CL,AHJCXZ LOP3LOP2:PUSH CXMOV CL, BYTE PTR [SI]ADC CL,0MOV [BX],CLPOP CXINC BXINC SILOOP LOP2LOP3:MOV CH,0MOV SI,OFFSET NUM1MOV DI,OFFSET NUM2MOV AH,NUM1LMOV AL,NUM2LCMP AH,ALJAE CHA1XCHG SI,DIXCHG AH,ALCHA1:SUB AH,ALMOV CL,ALCLCMOV BX,OFFSET OUTCOME2LOP11:MOV AL,[DI]PUSH CXMOV CL,[SI]SBB CL,ALMOV [BX],CLINC BXINC SIINC DIPOP CXLOOP LOP11MOV CL,AHJCXZ LOP7LOP21:PUSH CXMOV CL, BYTE PTR [SI]SBB CL,0MOV [BX],CLPOP CXINC BXINC SILOOP LOP21LOP7:MOV DI,OFFSET OUTCOME1 ADD DI,10HMOV CX,11HLOP4: MOV DL,[DI]DEC DICMP N,0HJNE LOP5CMP DL,0HJE LOP9LOP5:PUSH DXPUSH CXMOV CL,4HSHR DL,CLPOP CXCMP DL,9HJBE LOP6ADD DL,7HLOP6:ADD DL,30HMOV AH,2INT 21HMOV N,1HPOP DXAND DX,0FHCMP DL,9HJBE LOP8ADD DL,7HLOP8:ADD DL,30HMOV AH,2INT 21HMOV DL,'H'MOV AH,2INT 21HLOP9:LOOP LOP4MOV N,0MOV DI,OFFSET OUTCOME2 ADD DI,10HMOV CX,11HLOP14: MOV DL,[DI] DEC DICMP N,0HJNE LOP15CMP DL,0HJE LOP19LOP15:PUSH DXPUSH CXMOV CL,4HSHR DL,CLPOP CXCMP DL,9HJBE LOP16ADD DL,7HLOP16:ADD DL,30HMOV AH,2INT 21HMOV N,1HPOP DXAND DX,0FHCMP DL,9HJBE LOP18ADD DL,7HLOP18:ADD DL,30HMOV AH,2INT 21HMOV DL,'H'MOV AH,2INT 21HLOP19:LOOP LOP14MOV AH,4CHINT 21HCODE ENDSEND START实验2DATA SEGMENTTISHI1 DB 'Please enter the first number:','$' TISHI2 DB 'Please enter the second number:','$' JIA DB '+','$'JIAN DB '-','$'CHENG DB '*','$'CHU DB '/','$'DENG DB '=','$'YU DB '......','$'A DB 10B DW 10C DW 10000F DW 0HNUM1 DW 0HNUM2 DW 0HN DB 0HN1 DB 4HDATA ENDSSTACK1 SEGMENT STACKDW 30H DUP(0)STACK1 ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET TISHI1MOV AH,09HINT 21HLOOP2:MOV AX,NUM1MUL BMOV BX,AXMOV AH,1INT 21HCMP AL,0DHJE LOP1MOV NUM1,BXMOV AH,0SUB AL,30HADD NUM1,AXJMP LOOP2LOP1:MOV DL,0AH ;输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV DX,OFFSET TISHI2MOV AH,09HINT 21HLOOP1:MOV AX,NUM2MUL BMOV BX,AXMOV AH,1INT 21HCMP AL,0DHJE LOP3MOV NUM2,BXMOV AH,0SUB AL,30HADD NUM2,AXJMP LOOP1LOP3:MOV DL,0AH ;输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV N,0MOV DX,NUM1MOV F,DXLOP6:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP7MOV F,AXJMP LOP6LOP7:MOV CL,NMOV CH,0LOP16:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOP16MOV DX,NUM2MOV F,DXMOV N,0MOV DX,OFFSET JIAMOV AH,09HINT 21HLOOOP6:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOOP7MOV F,AXJMP LOOOP6LOOOP7:MOV CL,NMOV CH,0LOOOP16:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOOP16MOV DX,OFFSET DENG MOV AH,09HINT 21HMOV N,0LOOP3:MOV AX,NUM1ADD AX,NUM2MOV F,AXLOOP4:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP5MOV F,AXJMP LOOP4LOOP5:MOV CL,NMOV CH,0LOOP0:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP0MOV DL,0AH ;输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV N,0MOV DX,NUM1MOV F,DXLOP61:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP71MOV F,AXJMP LOP61LOP71:MOV CL,NMOV CH,0LOP161:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOP161MOV DX,NUM2MOV F,DXMOV N,0MOV DX,OFFSET JIANMOV AH,09HINT 21HLOOOP61:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOOP71MOV F,AXJMP LOOOP61LOOOP71:MOV CL,NMOV CH,0LOOOP161:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOOP161MOV DX,OFFSET DENGMOV AH,09HINT 21HMOV N,0MOV N,0MOV AX,NUM1SUB AX,NUM2MOV F,AXAND AX,10000000BCMP AX,10000000BJNE LOOP6NEG FLOOP6:MOV DX,0MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP7MOV F,AXJMP LOOP6LOOP7:MOV CL,NMOV CH,0LOOP16:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP16MOV DL,0AH ;输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV N,0MOV DX,NUM1MOV F,DXLOP62:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP72MOV F,AXJMP LOP62LOP72:MOV CL,NMOV CH,0LOP162:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOP162MOV DX,NUM2MOV F,DXMOV N,0MOV DX,OFFSET CHENGMOV AH,09HINT 21HLOOOP62:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOOP72MOV F,AXJMP LOOOP62LOOOP72:MOV CL,NMOV CH,0LOOOP162:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOOP162MOV DX,OFFSET DENGINT 21HMOV N,0MOV AX,NUM1MUL NUM2DIV CPUSH DXMOV F,AXMOV N,0 LOOP8:MOV DX,0MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP9MOV F,AXJMP LOOP8 LOOP9:MOV CL,NMOV CH,0 LOOP17:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP17MOV N,0POP FLOOP10:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP11MOV F,AXJMP LOOP10 LOOP11:MOV AL,NCMP AL,4HJE LOOP20MOV AL,4HSUB AL,NMOV CL,ALMOV CH,0 LOOP19:MOV DX,'0'INT 21HLOOP LOOP19LOOP20:MOV CL,NMOV CH,0LOOP18:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP18MOV DL,0AH ;输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV N,0MOV DX,NUM1MOV F,DXLOP64:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP74MOV F,AXJMP LOP64LOP74:MOV CL,NMOV CH,0LOP164:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOP164MOV DX,NUM2MOV F,DXMOV N,0MOV DX,OFFSET chuMOV AH,09HINT 21HLOOOP64:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOOP74MOV F,AXJMP LOOOP64 LOOOP74:MOV CL,NMOV CH,0LOOOP164:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOOP164MOV DX,OFFSET DENG MOV AH,09HINT 21HMOV N,0MOV AX,NUM1MOV DX,0DIV NUM2PUSH DXMOV F,AXMOV N,0LOOP15:MOV DX,0MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP12MOV F,AXJMP LOOP15LOOP12:MOV CL,NMOV CH,0LOOP21:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP21MOV DX,OFFSET YU MOV AH,09HINT 21HPOP FMOV N,0LOOP13:MOV DX,0MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP14MOV F,AXJMP LOOP13LOOP14:MOV CL,NMOV CH,0HLOOP22:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP22MOV AH,4CHINT 21HCODES ENDSEND START实验3DATA SEGMENTLENG DW 0HDATA ENDSSTACK1 SEGMENT PARA STACKDW 30H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATAMOV DS,AXLOOP1:MOV AH,1INT 21HCMP AL,20HJE LOOP1INC LENGMOV AH,0PUSH AXCMP AL,0DHJNE LOOP1MOV DL,0AH ;输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HPOP DXDEC LENGMOV CX,LENGLOOP2:POP DXMOV AH,2INT 21HLOOP LOOP2MOV AH,4CHINT 21HCODE ENDSEND START四实验结果实验1结果实验2结果实验3结果五实验心得1.计算机中处理的信息不全是数,有时需要处理字符或字符串,因此,计算机中必须能表示字符。

(完整word版)汇编语言课程设计代码转换程序

(完整word版)汇编语言课程设计代码转换程序

汇编语言课程设计报告( 2010 ——2011 年度第2 学期)代码转换程序专业计算机科学与技术学生姓名袁帅班级B计算机092学号0910704225指导教师王志宏完成日期2011年6月24日目录目录 (3)1概述 (1)1。

1 课程设计目的 (1)1。

2 课程设计内容 (1)2程序需求分析 (1)2。

1 程序目标 (1)2。

2 主体功能 (1)2.3 开发环境 (2)3程序概要设计 (2)3.1 程序的功能模块划分 (2)3。

2 程序流程图 (2)4程序详细设计 (4)4.1 程序功能菜单模块设计 (4)4.2小写字母向大写字母转换模块设计 (5)4。

3大写字母向小写字母转换模块设计 (5)4.4 二进制数向十六进制数转换模块设计 (6)4.5 十六进制数向二进制数转换模块设计 (6)4.6 十六进制数向十进制数转换模块设计 (7)5测试 (7)5.1 测试方案 (7)5.2 测试结果 (8)6小结 (8)参考文献 (10)附录 (11)附录1源程序清单 (11)附录1.1程序功能菜单模块源程序 (11)附录1.2小写字母向大写字母转换模块源程序 (14)附录1。

3大写字母向小写字母转换模块源程序 (16)附录1.4二进制数向十六进制数转换模块源程序 (17)附录1。

5十六进制数向二进制数转换模块源程序 (18)附录1.6十六进制数向十进制数转换模块源程序 (19)代码转换程序设计1 概述1.1 课程设计目的1、通过利用汇编语言写代码转换程序,更好的掌握汇编语言,通过实践来巩固汇编语言的理论知识。

2、巩固并加深对汇编语言程序设计知识的理解3、进一步掌握和应用汇编语言集成开发环境4、提高运用汇编语言解决实际问题的能力5、掌握书写程序设计开发文档的能力(书写课程设计实验报告)1。

2 课程设计内容功能菜单的编制;小写字母向大写字母的转换;大写字母向小写字母的转换;二进制数向十六进制数的转换;十六进制数向二进制数的转换;十六进制数向十进制数的转换。

代码转换程序设计

代码转换程序设计

目录摘要 (1)1 设计任务及分析 (2)1.1 设计任务要求 (2)1.2 设计系统分析 (2)1.3方案比较及认证 (2)2 方案设计 (3)2.1 方案原理 (3)2.2指令功能 (3)2.3 主程序流程图 (5)3 源程序 (7)3.1主程序设计 (7)3.2子程序大小写字母转换及流程图 (12)3.3子程序ASCII码转换CBA及流程图 (14)4 程序运行及调试 (16)4.1大小写转换 (17)4.2 ASCII码转换 (17)4.3 输入非字符 (18)4.4调试中出现的错误 (18)4.5结果分析 (20)5 心得体会 (21)参考文献 (22)本科生课程设计成绩评定表摘要汇编语言是直接面向处理器(Processor)的程序设计语言。

处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。

每一种处理器都有自己可以识别的一整套指令,称为指令集。

处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。

汇编语言的主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。

这次课程设计的任务是用汇编语言进行一个数制转换,从键盘输入一串字符(非字符则不接受),通过屏幕提示菜单选择转换成ASCII码,或者进行大小写转换(原来是大写转换成小写,小写则转换为大写)并显示。

先输入要转换的数据,再对数据进行检验判断其合法性,对不合法的数据进行警报并重新输入数据,对合法的数据按照要求进行大小写转换或者转换成ASCII,码,最后显示转换后的字符串。

关键词:DOS功能调用大小写转换ASCII码1 设计任务及分析1.1 设计任务要求(1)用汇编语言编写一个字母和数制之间的转换程序,设计出友好的交互界面;(2)实现小写字母和大写字母之间的相互转换;附加功能:将字符转换成其相应的ASCII码;(3)撰写课程设计说明书。

代码转换显示实验报告(3篇)

代码转换显示实验报告(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程序。

代码转换程序设计

代码转换程序设计
CALL CRLF
CALL OUTHEX;调用输出十六进制程序
CALL CRLF
JMP LKS
;十六进制转换成二进制
L5:CALL INHEX;调用输入十六进制程序
CALL CRLF
CALL OUTBIN;调用输出二进制程序
CALL CRLF
JMP LKS
;十六进制转换成十进制
L6:CALL INHEX;调用输入十六进制程序
JMP INBL1
INBEXIT:RET
INBIN ENDP
3.4
十进制数从键盘键入之后需要进行乘法运算之后转换成二进制数,再完成从键盘向内存的循环输入,其代码如下:
INDEC PROC
LEA DX,MESS2
MOV AH,09H;显示字符串MESS2
INT 21H
MOV BX,0
INDL1:MOV AH,01H;从键盘输入字符
MOV AH,0
SHL AX,1
ADD SI,AX
JMP [SI]
;二进制转换成十进制
L1:CALL INBIN;调用输入二进制程序
CALL CRLF
CALL OUTDEC;调用输出十进制程序
CALL CRLF
JMP LKS;直接跳转到LKS
;二进制转换成十六进制
L2:CALL INBIN;调用输入二进制程序
MOV AH,09H;显示字符串MESS5
十进制转换为二进制整数部分的方法叫做除2取余法,每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。小数部分的方法叫乘2取整法,就是将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三代码转换程序设计
一.实验目的:
1.掌握几种最基本的代码转换方法;
2.运用子程序进行程序设计.
二.实验内容:
1.从键盘上输入若干两位十进制数,寻找其中的最小值,然后在屏幕上显示出来.
2.两个十进制数之间的分隔符,输入结束标志自定,但要在报告中说明.
3.对输入要有检错措施,以防止非法字符输入,并有适当的提示.
4.将整个程序分解为若干模块,分别用子程序实现.在报告中要给出模块层次图.
三、创新功能:
1、成功避免空格影响,在输入数据时,用户可以键入无限多用于分隔的空格,不会影响程序的输入,按回车结束一串待比较数的输入。

2、扩充了题目要求,将判断范围扩展到负数领域,在一串数中允许有负数输入,且可以输出最小数。

运行结果如下,可以看到,负数存在时仍可正常判断,以回车作为结束标志
四.预习题:
1.如何将输入的两个字符(0 -- 9)变为十进制或二进制数?
答:将(高位ASCII码-‘0’)*10+低位ASCII码-‘0’即为对应10进制数。

将高位ASCII码-‘0’后左移一位保存,再左移两位,求两者之和,在加上低位ASCII码-‘0’则可通过移位转移成二进制数。

2.如何将选出的最小值(二进制或十进制)变为ASCII 码再进行显示?
答:可将两位数除10,对AL中的商+‘0’显示,AH中的余数+‘0’显示。

3.你觉得采用二进制运算还是十进制运算更适合于这个实验?
答:二进制运算。

直接通过ASCII码高低位判断大小。

五、流程图:
六、代码分析
JUDGE MACRO; 判断字符是否合法
CMP AL,'0'
JB WRONG ;不合法转去wrong处执行
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
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
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中存放负的最小值的十位
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
CMP AL,'-';判断数的符号
JZ NEAR PTR NEGT;负数则转去NEGT处执行
JUDGE;判断数的合法性
CMP AL,BH;输入的值与最小正数的十位相比较
JNA NEXT;当前输入的值有可能比得到的最小数小
K: INPUT;把下一个不符合条件的字符读出
JMP NEAR PTR LOOP1
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 ;判断当前输入的负数是否为最小负数
JB K
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';判断最小数的符号是否为负(通过负数最高位是否被修改判断)
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
INT 21H
ILLEGAL PROC;显示不合法字符串
MOV AH,09H
MOV DX,SEG STRING1
MOV DS,DX
LEA DX,STRING1
INT 21H
RET
ILLEGAL ENDP
CODE ENDS
END START
七、程序设计思路与总结
程序分为字符输入模块、字符显示模块、判断合法模块、以及主程序的比较模块。

采取逐字符判断,若检测到非法输入则立即停止输入。

输入时优先判读空格,找到第一个不为空格的数判断其合法性,如果合法则认为它是最高位,和当前最小值的最高位比较,若比当前最小值的最高位大则直接丢弃,同时丢弃下一个低位字符,否则转入低位的比较。

若输入的数比当前的数小,则更新最小值。

循环判断直至输入结束。

其中判断过程中之间按ASCII码判断,无需转换成十进制数。

在拓展功能中,增加了负数的判断,主要是首字符的读取,如果是‘-’号不能认为是非法输入,因此要优先判断,每次读取一个数判断正负,用两个寄存器分别存储负数的最小值和正数的最小值。


出时通过判断负数的最小值是否为0来决定输出,成功实现功能。

相关文档
最新文档