实验三 代码转换程序设计

合集下载

北京邮电大学微机原理软件实验报告

北京邮电大学微机原理软件实验报告

信息与通信工程学院微机原理软件实验报告班级:姓名:学号:班内序号:时间:微机原理软件实验·报告实验一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篇)

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

微机原理及接口技术实验3-码制转换

微机原理及接口技术实验3-码制转换

23 X2 02 23 03
AND AL,0FH
编程提示2 转换成ASCII码
分离后
大于9 (属于A~F) 转移至 L2 ADD AL,30h ;(属于0~9) JMP L1 L2: ADD AL,37H L1: [DI]AL ;保存ASCII码

程序结构




SI1000H DI1010H CL字节数 L5: AL [SI] ;高位处理 右移4次 AND AL,0FH 大于9 转移至 L2 ;转换成ASCII码 ADD AL,30h ;(属于0~9) JMP L1 L2: ADD AL,37H L1: [DI]AL ;保存ASCII码
AL [SI] ;低位处理 AND AL,0FH 大于9 转移至 L4 ;转换成ASCII码 ADD AL,30h ;(属于0~9) JMP L3 L4: ADD AL,37H L3: [DI+1] AL ;保存ASCII码 SI SI+1 DI DI+2 CL CL-1 JNC L5 INT 3
1000H 1001H 1002H 01 89 AB 1010H 1011H 1012H 1013H 30 31 38 39 41 42
030 高位
131 低位
1014H 1015H
பைடு நூலகம்
DI
编程提示1 高/低位处理---分离
高位处理 AL [SI] 右移4次
AND AL,0FH
低位处理 AL [SI]
计算机技术实验 ( I ) - 1
实验3 十六进制数转换成ASCII码
ASCII码----非数值信息表示
用一个字节的低7位编码,最高位置0 0XXXXXXX 00000000

汇编代码转换程序(字母转换,进制转换)

汇编代码转换程序(字母转换,进制转换)

湖南农业大学课程设计报告学院:信息科学技术学院班级:2010级计算机3班姓名:杨田娇学号:201041842312课程设计题目:代码转换程序设计课程名称:汇编语言与微机原理指导老师:唐小勇评阅成绩:评阅意见:成绩评定教师签名:日期:年月日目录概述 (1)一设计题目 (1)二设计内容与要求 (1)三设计思想 (1)四程序流程图 (3)五程序源代码 (5)六设计过程中遇到的问题及解决方法 (14)七设计心得 (15)代码转换程序设计概述:代码转换程序主要是实现字母间的转换和数值之间的转换。

其中字母转换是大小写字母之间的互换,二进制转换则是二进制,十进制,十六进制之间的转换。

程序设计成一个代码转换系统,给出一个可供选择的菜单,根据界面的信息选择不同的子功能。

通过做这个程序,加强汇编语言编程的能力,更好的了解其基本原理,基本的思想,基本的方法以及相关的注意事项。

一、设计题目代码转换程序设计二、设计内容与要求完成一个字母或数制之间的转化程序,主程序分别具有 5 种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。

5 种可选择的子功能分别为:1)实现小写字母向大写字母的转换2)实现大写字母向小写字母的转换3)实现二进制数向十六进制数的转换4)实现十六进制数向二进制数的转换5)实现十六进制数向十进制数的转换三、设计思想运行程序,首先会显示主界面,用户可依据提示选择不同的编号,实现不同的子功能。

1、大写字母向小写字母的转换。

当用户选择编号a,便选中了这一个子功能。

通过判断标识符,程序跳转到标识符所在的位置。

根据提示输入一个大写字母,会有一个判断输入是否合法的过程,若输入的是非大写字母,则会提示输入错误,请重新输入,直到输入正确为止。

通过改变assic码值,实现大写字母向小写字母的转换。

显示转换后的字母,然后跳转到主菜单。

2、小写字母向大写字母的转换。

当用户选择编号b,便选择了这一个子功能。

实验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.计算机中处理的信息不全是数,有时需要处理字符或字符串,因此,计算机中必须能表示字符。

微机原理与接口技术实验——码转换报告

微机原理与接口技术实验——码转换报告

一、实验内容:编制程序,把十进制数15786转化成二进制数。

提示:15786=1×10×10×10×10+5×10³+7×10²+8×10+6循环CX=5实验要求:1.绘出练习1和2的程序流程图。

2编写完整的程序,上机调试。

3使用DEBUG调试命令,查看中间结果,并查看最终结果。

二、程序清单DATA SEGMENTBUFFER1 DD 15786DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,BUFFER1 ;取出十进制数的首地址MOV BX,[SI] ;将首地址的内容放到寄存器MOV CX,16 ;循环次数NEXT1:MOV DL,31H ;1SHL BX,1 ;左移一位,将最高位移到进位位中JC NEXT2 ;进位位为1,即最高位为1,跳转输出1MOV DL,30H ;否则输出0NEXT2:MOV AH,02HINT 21HLOOP NEXT1 ;循环MOV AH,4CHINT 21HCODE ENDSEND START程序流程图见下页:程序流程图三、运行结果程序编译:程序链接:程序运行结果:程序运行结果:15786十进制数转换为二进制输出为0011 1101 1010 1010四、调试分析及体会调试分析:在此次编程中第一次编出的程序经过编译没有错误之后经过链接运行结果不正确。

首先自己进行检查,通过检查发现自己没有认真,在编写程序时,误把十进制数15786写成了16进制,写为了15786H(因为这个自己一直没有检查出来,还在调试如何改正),后来检查了出来。

因为这个缘故,在进行把数字取出放入寄存器的时候,由于BX是16位数据寄存器,而20位的数放不下,于是在循环输出二进制数时,首先不会输出20位,其次输出的结果是与15786H相关的二进制,结果完全错误。

(完整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. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
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处执行
相关文档
最新文档