实验三 代码转换程序设计
- 格式:docx
- 大小:109.94 KB
- 文档页数:6
信息与通信工程学院微机原理软件实验报告班级:姓名:学号:班内序号:时间:微机原理软件实验·报告实验一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 命令作单步跟踪调试。
比较每条指令执行后的结果和原来的理解是否一致,得出程序运行的结果:它们是写在什么单元,具体内容是什么;并判断结果是否正确。
第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程序。
《微机原理及接口》课程设计报告课题名称代码转换程序学院自动控制与机械工程学院专业班级姓名学号时间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。
湖南农业大学课程设计报告学院:信息科学技术学院班级: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程序设计——顺序程序设计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相关的二进制,结果完全错误。
汇编语言课程设计报告( 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 课程设计内容功能菜单的编制;小写字母向大写字母的转换;大写字母向小写字母的转换;二进制数向十六进制数的转换;十六进制数向二进制数的转换;十六进制数向十进制数的转换。