汇编实现大小写字母转换
大小写字母转换设计(含程序)--课程设计
摘要在课程设计之前,具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法是必不可少的。
因此原理部分重新温习并整理了相关知识。
课程设计要求进行大小写字母的转换。
其实字母大小写的区别在于他们的ASCII码范围,它们之间的转换其实就是加减相应的ASCII码值。
在判断输入的字母是大写的还是小写的(即判断输入符号ASCII码在41H~5AH还是在61H~7AH内)之后,决定判断是加上还是减去ASCII码值。
另外如果输入的不是字母(输入字符对应ASCII码值不在41H~5AH或61H~7AH内),则需要报警提示,这不但涉及到用汇编语言实现发声的方法,而且对计算机硬件的了解也有要求,因此原理部分加入了部分有关声音产生的硬件知识。
关键词:汇编语言,ASCII码,大小写转换1.原理简介1.1 8086的内部结构80x86从功能上分执行单元EU(Execution Unit),和总线接口单元BIU(Bus Interface Unit),执行单元由算术逻辑单元(ALU)、标志寄存器、通用寄存器组和EU控制器等部件组成。
指令执行部件EU由算术逻辑单元、标志寄存器、通用寄存器和EU控制器等部件组成。
主要功能是执行指令:一般顺序执行,EU不断地从指令队列中取指令连续执行,而省去访问存储器取指令的时间。
需要访问存储器取操作数时,EU将访问地址送给BIU后,将要等待操作数到来后才能继续操作;遇到转移类指令时,要将指令队列中的后续指令作废,等待BIU重新从存储器取出目标地址中的指令代码进入指令队列后,EU才能继续执行指令。
算术逻辑单元(ALU)完成16位或8位的二进制运算;16位暂存寄存器用来暂存参加运算的操作数。
运算结果通过内部总线送到通用寄存器组或BIU的内部寄存器中等待写入存储器。
经ALU运算后的结果特征置入标志寄存器中保存EU控制器负责从BIU的指令队列中取指令,并对指令译码;根据指令要求向EU内部各部件发出控制命令以完成各条指令的功能。
《汇编语言》实验指导书
(1)输入程序并汇编
_A100
0B03:0100 MOV DL,33
0B03:0102 MOV AH,2
0B03:0104 INT 2l
“0B03:0100”类似这样的地址是系统自动提供的,不需用户输入。至此程序已输入完毕,并汇编成机器指令。现在用G命令运行程序如下:
(2)运行程序
_G
3
Program terminated normally
编程思路(仅供参考):
该题目要求掌握运算中带符号数和无符号数运算的区别。本题目只考虑有符号数情况
参考程序清单:ABC.ASM
DATA SEGMENT
X DB1;x 单元存放数字1,以下类推
Y DB4
Z DB3
WDB?,? ;预留2个单元,存放运算结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
INT 21H
:
当要执行INT 21H这条指令时,若用T命令进行跟踪,则进入INT 21H程序(DOS功能调用)后,需要数十次T命令才能返回当前程序;若采用P命令进行调试,则只执行INT 21H一条指令,执行完立即返回,给调试者的感觉好象是执行了一条普通指令一样。因此,当读者以后遇到CALL、INT n指令或带重复前缀的数据串操作指令时,若不想观察相应过程的详细执行过程,就可以用P命令。
若是0则为偶数若为2则为奇数可以采用test指令和条件转移指令jz来实现在内存中以buf单元开始缓冲区中连续存放着10个学生的分数试编制程序统计英中90100分8089分6079分及60分以下少人并把结果分别存放在s9s8s7和s6试编制程序从键盘输入学生成绩abcd自动汇总并显示各类分数的人数假定各类分数的总人数在0止输入
用汇编进行大小写转换
⽤汇编进⾏⼤⼩写转换最近学习了⼀下8086的16位汇编语⾔,学习了⼀种⽐较奇葩的进⾏字母⼤⼩写转换的⽅法。
不必⽤CMP语句进⾏判断,⼀步到位。
当然前提要求是输⼊的数据必须是字母哈。
把字母的ASCII码⽤⼆进制查看:⼤写 16进制⼆进制⼩写 16进制⼆进制A 41 0100 0001 a 61 0110 0001B 42 0100 0010 b 62 0110 0010C 43 0100 0011 c 63 0110 0011D 44 0100 0100...Z 5A 0101 1010 z 7A 0111 1010明显的,⼩写的ASCII值 = ⼤写的ASCII值 + 20H⽽且,⼩写的和⼤写的在第5位是完全不同的,⼤写的恒为0,⼩写的恒为1于是,可以⽤位运算。
assume cs:code, ds:datadata segmentdb 'baSiC'db 'InFOinTion'data endscode segmentstart: mov ax, datamov ds, ax ;数据域对应datamov bx, 0mov cx, 5s: mov al, [bx]and al, 11011111b ;转换成⼤写mov [bx], alinc bxloop smov bx, 5mov cx, 10s1: mov al, [bx]or al, 00100000b ;转换成⼩写mov [bx], alinc bxloop s1mov ax, 4c00hint 21hcode endsend start对应的C++语⾔:#include <cstdio>using namespace std;int main(){char a[9] = "aBcdeFGh";char b[9] = {0};char c[9] = {0};for (int i=0; i<9; i++)b[i] = a[i] & 0xDF; //转换成⼤写for (int i=0; i<9; i++)c[i] = a[i] | 0x20; //转换成⼩写return 0; }。
英文字母大小写转换程序设计(2)
英⽂字母⼤⼩写转换程序设计(2)摘要 (1)数制转换 (2)1 DOS功能调⽤介绍 (2)2 设计⽅案 (5)3 总程序 (6)4 程序流程图及程序设计分析 (13)4.1主程序流程图 (13)4.2主程序流程图分析 (14)4.3⼤⼩写转换⼦程序ABC (14)4.3.1 ⼦程序ABC (14)4.3.2 ⼦程序ABC的流程图 (16)4.3.3 ⼦程序ABC流程图分析 (16)4.4ASCII码转换⼦程序CBA (17)4.4.1 ⼦程序CBA (17)4.4.2 ⼦程序CBA的流程图 (18)4.4.3 ⼦程序ABC流程图分析 (18)5 程序运⾏实例 (19)5.1⼤⼩写转换 (20)5.2ASCII码转换 (20)5.3输⼊⾮字符 (21)5.4调试中出现的错误 (21)6 ⼼得体会 (23)参考⽂献 (24)摘要汇编语⾔是直接⾯向处理器(Processor)的程序设计语⾔。
处理器是在指令的控制下⼯作的,处理器可以识别的每⼀条指令称为机器指令。
每⼀种处理器都有⾃⼰可以识别的⼀整套指令,称为指令集。
处理器执⾏指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变⾃⼰内部的⼯作状态,也能控制其它外围电路的⼯作状态。
汇编语⾔的主要特点是可以使⽤助记符来表⽰机器指令的操作码和操作数,可以⽤标号和符号来代替地址、常量和变量。
这次课程设计的任务是⽤汇编语⾔进⾏⼀个数制转换,从键盘输⼊⼀串字符(⾮字符则不接受),通过屏幕提⽰菜单选择转换成ASCII码,或者进⾏⼤⼩写转换(原来是⼤写转换成⼩写,⼩写则转换为⼤写)并显⽰。
先输⼊要转换的数据,再对数据进⾏检验判断其合法性,对不合法的数据进⾏警报并重新输⼊数据,对合法的数据按照要求进⾏⼤⼩写转换或者转换成ASCII,码,最后显⽰转换后的字符串。
关键词:DOS功能调⽤ ASCII码⼤⼩写转换数制转换1 DOS功能调⽤介绍DOS是⼀个磁盘操作系统,也称为IBM-DOS或者MS-DOS。
大小写转换代码
大小写转换代码在编程中,大小写转换是一个常见的需求。
有时候我们需要将字符串中的所有字母转换成大写或小写,有时候我们需要将字符串中的首字母大写。
在这篇文章中,我们将介绍如何使用代码实现这些转换。
将字符串转换成大写在Python中,我们可以使用upper()方法将字符串中的所有字母转换成大写。
下面是一个例子:```string = "hello world"string_upper = string.upper()print(string_upper)```输出结果为:```HELLO WORLD```在这个例子中,我们首先定义了一个字符串变量string,然后使用upper()方法将其转换成大写,并将结果存储在另一个变量string_upper中。
最后,我们使用print()函数输出结果。
将字符串转换成小写与将字符串转换成大写类似,我们可以使用lower()方法将字符串中的所有字母转换成小写。
下面是一个例子:```string = "HELLO WORLD"string_lower = string.lower()print(string_lower)```输出结果为:```hello world```在这个例子中,我们首先定义了一个字符串变量string,然后使用lower()方法将其转换成小写,并将结果存储在另一个变量string_lower中。
最后,我们使用print()函数输出结果。
将字符串中的首字母大写有时候我们需要将字符串中的首字母大写,可以使用capitalize()方法实现。
下面是一个例子:```string = "hello world"string_capitalize = string.capitalize()print(string_capitalize)```输出结果为:```Hello world```在这个例子中,我们首先定义了一个字符串变量string,然后使用capitalize()方法将其首字母大写,并将结果存储在另一个变量string_capitalize中。
代码转换(大小写字母转换)
北华航天工业学院课程设计报告(论文)设计课题:代码转换大小写字母转换专业班级:电子信息工程学生姓名:指导教师:设计时间: 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、汇编语言基础汇编:计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把源程序译成机器语言程序(目标程序)才能执行,这一“翻译”工作称为汇编。
汇编有人工汇编和计算机汇编两种方法。
汇编语言是面向机器的,每一类计算机分别有自己的汇编语言。
汇编语言占用的内存单元少,执行效率高,广泛应用于工业过程控制与检测等场合。
汇编语言程序代码
BEGIN: MOV AH, 1 ;从键盘输入一个字符的 DOS 调用 INT 21H SUB AL, ‘0’ JB STOP ;输入字符<‘0’吗? CMP AL, 9 ;输入字符>‘9’吗? JA STOP CBW MOV CX, AX ;响铃次数 N JCXZ STOP BELL: MOV DL, 07H ;准备响铃 MOV AH, 2 ;显示一个字符的 DOS 调用,实际为响铃 INT 21H CALL DELAY100ms ;延时 100ms LOOP BELL STOP: RET 5.6 编写程序,将一个包含有 20 个数据的数组 M 分成两个数组:正数数组 P 和负数数组 N, 并分别把这两个数组中数据的个数显示出来。 答:程序如下:
SHR AX, CL ;右移四次 DEC CH JNZ A10 ;循环四次完了码? B10: MOV DL, STORE ;四组数分别放在 AL、BL、CL 和 DL 中 MOV CL, STORE+1 MOV BL, STORE+2 MOV AL, STORE+3 STOP: RET 5.4 试编写一程序,要求比较两个字符串 STRING1 和 STRING2 所含字符是否完全相同,若相 同则显示‘MATCH’,若不相同则显示‘NO MATCH’。 答:程序如下:
DSEG SEGMENT STORE DB 4 DUP (?) DSEG ENDS BEGIN: MOV CL, 4 ;右移四次 MOV CH, 4 ;循环四次 LEA BX, STORE A10: MOV DX, AX AND DX, 0FH ;取 AX 的低四位 MOV [BX], DL ;低四位存入 STORE 中 INC BX
CMP AL, 41H ;又<A 吗? JB INPUT ;不是‘A~F’的数重新输入 CMP AL, 46H ;>F 吗? JA INPUT ;不是‘A~F’的数重新输入 AND AL, 0FH ;转换为:1010B~1111B ADD AL, 9 BINARY: OR BL, AL ;将键盘输入的数进行组合 DEL CH JNZ INPUT DISPN: MOV CX, 16 ;将 16 位二进制数一位位地转换成 ASCII 码显示 DISP: MOV DL, 0 ROL BX, 1 RCL DL, 1 OR DL, 30H MOV AH, 2 ;进行显示 INT 21H LOOP DISP STOP: RET 代码转换; 查表法,实现一位 16 进制数转换为 ASCII 码显示
《微机原理与接口技术》课程设计说明书-英文字母大小写转换程序设计
汇编语言是用指令的助记符、符号地址、标号等书写程序的语言,实际上是机器语言的一种符号表示,主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。汇编语言是能够利用计算机所有硬件特性进而直接控制硬件的唯一语言。本次课程设计的任务是用汇编语言做一个英文字母大小写转换程序,按照用户的要求完成对输入数据的大写或者小写转换。先输入要转换的数据,再对数据进行检验判断其合法性,对不合法的数据进行警报并重新输入数据,对合法的数据按照要求进行大写或者小写转换,最后显示转换后的字符串。
课程设计任务书
学生姓名:****专业班级:电信0801班
指导教师:****工作单位:信息工程学院
题 目:英文字母大小写转换程序设计
初始条件:
具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(
格式:MOV AH, 01H
INT 21H
功能:按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。如果按下的是Ctrl+Break组合键,则终止程序执行。1号功能调用无须入口参数,出口参数在AL中。
(
格式:MOV AH, 08H
INT 21H
功能:同1号功能调用,但字符不在屏幕上显示。
应用INT 21H系统功能调用的方法如下。
①入口参数送指定的寄存器或内存。
②功能号送AH中。
③执行INT 21H软中断指令。
有的子功能程序不需要入口参数,但大部分需要把参数送入指定位置。程序员只要给出这三方面的信息,不必关心程序具体如何执行,在内存中的存放地址如何,DOS就会根据所给的参数信息自动转入相应的子程序去执行并产生相应结果。下面介绍常用的功能调用。
微机原理课程设计(汇编语言)——将键盘输入的小写字母转换成大写字母的设计
SEGMENT DB 20 DUP(?) DB 'please input letters, end with enter, exit with ctrl-c',0DH,0AH,'$' DB 'the inverted litter is:', 0DH, 0AH,'$' DB 0DH,0AH,'$' ENDS SEGMENT ASSUME CS:CODE,DS:DATA MOV AX,DATA MOV DS,AX MOV SI,00H MOV BX,OFFSET DATA1 LEA DX,DISPP1 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,03H JZ L4 CMP AL,0DH JZ L3 CMP AL,61H JZ L2 SUB AL,20H JMP L2 MOV [BX+SI],AL INC SI JMP L1 LEA DX,DISPP3 MOV AH,9 INT 21H LEA DX,DISPP2 MOV AH,9 INT 21H MOV [BX+SI],AL MOV AL,0AH MOV [BX+SI+1],AL MOV AL,'$' MOV [BX+SI+2],AL MOV DX,BX MOV AH,9 INT 21H
INT 21H 的 01H 号子功能接收键入字符
Y
是 ctrl+c 键?
N Y
是回车键?
N
是小写字母?
N
Y
小写字母的 ASCII 码值转化为冲区[BX+SI]单元
SI 加 1 指向下一单元
显示转换后的字符行缓冲区内容
转换成大写字母的函数
转换成大写字母的函数转换成大写字母是一种常见的文本处理需求,通常用于将小写字母转换为大写字母。
在许多编程语言和文本编辑器中,都提供了内置的函数或方法来实现这个功能。
下面是一些常用编程语言中转换成大写字母的函数的示例,供参考:1. Python:在Python中,可以使用内置的upper()方法将字符串中的小写字母转换为大写字母。
```string = "hello world"uppercase_string = string.upper()print(uppercase_string) # 输出 "HELLO WORLD"```2. JavaScript:在JavaScript中,可以使用内置的toUpperCase()方法将字符串中的小写字母转换为大写字母。
```let string = "hello world";let uppercaseString = string.toUpperCase();console.log(uppercaseString); // 输出 "HELLO WORLD"```3. Java:在Java中,可以使用String类的内置方法toUpperCase()将字符串中的小写字母转换为大写字母。
```String string = "hello world";String uppercaseString = string.toUpperCase();System.out.println(uppercaseString); // 输出 "HELLO WORLD" ```4. C++:在C++中,可以使用算法库中的transform()函数结合toupper()函数将字符串中的小写字母转换为大写字母。
```cpp#include <iostream>#include <algorithm>#include <cctype>int main() {std::string str = "hello world";std::transform(str.begin(), str.end(), str.begin(),[](unsigned char c){ return std::toupper(c); });std::cout << str << std::endl; // 输出 "HELLO WORLD"return 0;}```5. C#:在C#中,可以使用内置的ToUpper()方法将字符串中的小写字母转换为大写字母。
大小写字母转换设计任务书
《微机原理综合训练》设计任务书题目:大小写字母转换程序设计学生姓名:学号:班级:题目类型:设计性指导教师:一、课程设计题目大小写字母转换程序设计。
二、题目简介以大小写字母为背景,对大小写字母的转换程序进行分析和设计。
通过该题目的分析和设计,学习微机软、硬件系统设计开发过程,加深微机原理及应用课程基础知识的理解和综合运用能力,熟悉集成电路芯片的使用方法,熟悉微机编程及接口电路,学习体会工程实际设计的过程,培养学生独立解决实际工程问题的综合能力。
学生初步得到用汇编语言书写程序的训练,全面培养程序设计过程中的分析、设计、编码、测试及文档规范书写的能力,得到运用汇编语言的综合训练,提高解决实际问题的能力。
三、设计任务学生通过该题目的设计过程,可以初步掌握汇编语言的运用、软件开发方法并提高解决实际问题的能力。
设计任务为:从键盘输入一串英文字符,若是小写字母则转换成大写字母在下一行输出,若是大写字母则转换成小写字母在下一行输出,若不是英文字符则显声响报警。
程序采用汇编语言在PC机上完成,同时完成符合学校要求的设计计算说明书。
提倡创新。
四、设计要求1.利用Intel 8086 CPU及其相应的外围扩展电路及接口电路,设计系统硬件原理图,并绘制于2号工程图纸。
2.给出程序的设计思路,设计系统软件流程框图,并绘制于2号工程图纸。
3.完成设计计算说明书。
五、提交的成果1. 设计计算说明书一份,包括以下内容:(1) 封面;(2) 设计任务书(3) 课题摘要;(4) 目录;(5) 正文:①简要说明本设计的基本内容、用途及特点;②方案比较及论证;③硬件系统说明(硬件设计思路、系统构成框图、芯片选择、存储空间与I/O地址分配);④画出完整的硬件电路图,并说明电路的工作原理;⑤软件系统说明(软件设计思路、源程序清单及必要的注释);⑥主要单元电路的设计及参数计算;⑦列出所用元器件及集成芯片型号;⑧指出所设计电路的特点和方案的优缺点;⑨总结体会;⑩参考文献。
c++将小写字母转化为大写字母的程序
一、概念解释在计算机编程领域,C++语言是一种十分常用的编程语言,它具有灵活性和高效性,被广泛应用于各种软件开发领域。
在实际的编程过程中,经常会遇到需要将小写字母转化为大写字母的情况,这在处理字符串、文本分析等方面都非常常见。
二、转化方法在C++语言中,要实现将小写字母转换为大写字母,有多种方法可以选择。
一种常见的方法是使用标准库中的 toupper 函数,这个函数能够将一个小写字母转化为大写字母。
另外,也可以通过计算ASCII码的方式来实现字母大小写的转化,因为大写字母和小写字母在ASCII 码中是有规律可循的,通过加减特定的数值就可以完成转化。
三、示例代码接下来,我将给出一个C++的示例代码,用来演示如何将小写字母转化为大写字母:```cpp#include <iostream>#include <cctype> // 包含头文件,这个头文件中包含了 toupper函数的声明int main() {char lowercase = 'a'; // 定义一个小写字母char uppercase = toupper(lowercase); // 调用 toupper 函数将小写字母转化为大写字母std::cout << "小写字母 " << lowercase << " 被转化为大写字母 " << uppercase << std::endl; // 输出转化结果return 0;}```通过这个示例代码,可以清楚地看到如何利用 toupper 函数来实现小写字母到大写字母的转化,这也是C++中常见的做法。
四、个人观点在实际的软件开发中,对于字符串的处理和转化是非常常见的需求,而字母大小写的转化就是其中一个常见的问题。
在C++中,通过使用标准库中的 toupper 函数可以很方便地实现这个功能,同时也可以通过其他方法来完成转化。
汇编实战一:大写字母转换成小写形式
汇编实战⼀:⼤写字母转换成⼩写形式DATAS SEGMENT;此处输⼊数据段代码str1 db "Please enter a captial letter:"db 0dh,0ah,'$'str2 db "Error Input"db 0dh,0ah,'$'DATAS ENDSSTACKS SEGMENT;此处输⼊堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输⼊代码段代码MOV dx,offset str1MOV ah,9int 21hMOV ah,01int 21hCMP al,41H ;将al与ASCII码为41H的字符⽐较JB exitCMP al,5AH ;将al与ASCII码为5AH的字符⽐较JA exitADD al,32 ;⼤写转⼩写MOV dl,al ;打印语句MOV ah,02int 21hMOV AH,4CH ;结束INT 21Hexit: ;之前⽐较的时候,如果错误,跳转到这个⼊⼝MOV dx,offset str2MOV ah,9int 21hMOV ah,4chint 21hCODES ENDSEND START写完了之后主要感受就是虽然是更接近底层的汇编语⾔,但其实其内容很多还是框架形式的,有点像 java 和 c++ 的⼀些结构框架,直接⽤就⾏,⽐如MOV ah,4ch int 21h 就是代表结束,有点像封装的意思,很多都是⼀⽤就是很⼤块的完整代码,只需要改其中的⼀些参数就可以了。
[应用]汇编语言编程键盘输入的小写字母换成大写
[应用]汇编语言编程键盘输入的小写字母换成大写汇编语言编程键盘输入的小写字母换成大写用汇编语言编程,要求键盘输入的小写字母换成大写我这个程序如果输入小写,则转换成大写输出;如果输入大写,则转换成小写输出。
cseg segmentassume cs:cseg begin:mov ah,1int 21hxor al,20hmov dl,almov ah,2int 21hmov ah,4chint 21h cseg endsend begin……BUF DB "please input:$"……start: mov ax,datamov ds,axlea dx,BUFmov ah,9int 21hlopa: mov ah,10 ;10号调用输入字符串int 21hmov dl,alcmp dl,'a'jb Lcmp dl,'z'ja Lsub dl,20hL: mov ah,2int 21hEXIT: mov ah,4chint 21h……汇编程序:从键盘输入一串小写字母转换成大写 2007年12月04日星期二12:44 ;从键盘输入一行字符把其中的小写字母转换成大写字符输出,其它字符原样输出data segmentchars db 200 dup(?) ;开辟200字节的缓冲区 data ends;--------------------------------- code segmentassume cs:code,ds:datastart :push dsmov ax,0push axmov ax,datamov ds,axlea bx ,charsmov si,0mov ch,0;----------------------输入字符子程序 scanf:mov ah,1int 21hcmp al,0dhjz crtcmp al,61hjnb alsub ;al>='a' mov [bx],alinc bxinc chjmp scanf;-------------------------- ;-----------------------输出字符crt:mov dl,chars[si] mov ah,2int 21hinc sidec chjz exitjmp crt;---------------------- exit:mov ah,4chint 21h;---------------------- alsub:cmp al,7ah ;al<='z'jbe alsub20hmov [bx],alinc bxinc chjmp scanf;--------------------- alsub20h:sub al,20hmov [bx],alinc bxinc chjmp scanf;---------------------code endsend start汇编语言编程问题:用键盘输入一个字符串,含有若干大小写字母,数字,要求统计出三种类型各有多少个,并显示浏览次数:465次悬赏分:10 | 解决时间:2010-11-1 11:14 | 提问者:木易秋心这是微机原理课程上的一道上机实验题,所知道的解题思路为:需要分析其输入与输出的内容,根据ASC码进行比较来确定各类型的数量,最后显示出来使用的是2号功能调用。
汇编语言4
高位
dest
低位
CF
图3-4 逻辑右移操作示意图
例3-35:分析以下程序段。
• MOV BX ,24H ;(BX)= 36 = 00100100B • MOV CL ,2 • SHR BX ,CL ;将BX内容右移2位, (BX)= 00001001B,CF=0 • 执行程序段以后,(BX)= 09H = 9,相当于除以2的2 次方。 • 由此可见,逻辑右移指令可以方便地实现操作数除运算 (n为移位次数)。不过在使用中要注意操作数应该为无 符号数,否则会得出错误结果。
例3-27:
MOV AL ,56H ;(AL)= 01010110B
NOT AL ;(AL)= 10101001B = 0A9H • 说明:NOT指令是单操作数指令,该操作数可以是立即数以 外的任何寻址方式。NOT指令不影响标志位。
2.逻辑与指令AND
• 指令格式:AND dest , src • 功能:将目的操作数和源操作数按位“与”,结果存入目的地 址中。即dest (dest)∧(src) 。 • “与”运算的规则为:1∧1=1,1∧0=0,0∧1=0,0∧0=0。 • 该指令可以屏蔽操作数中的某些位,使其余位保持不变。要屏 蔽的位与0相“与”,不变的位与1相“与”的左移和右移能够实现对数据乘以2的 整数次幂和除以2的整数次幂。 • MOV AL,64H • MOV CL,2 • SHL AL,CL;实现对64H左移2位,得到结果 AL=90H • 左移,可能出现溢出,造成错误。
算术移位的左移和右移实现乘除
• 算术移位的左移和右移能够实现对数据乘以2的 整数次幂和除以2的整数次幂。 • MOV AL,64H • MOV CL,2 • SHL AL,CL;实现对64H左移2位,得到结果 AL=90H • 左移,可能出现溢出,造成错误。
电子科技大学_汇编实验报告
电子科技大学计算机工程学院标准实验报告(实验)课程名称电子科技大学教务处制表电子科技大学实验报告实验一学生姓名:穆萨·图拉克学号:2012060090033 指导教师:实验地点:主楼A2-412 实验时间:19:00~一、实验室名称:二、实验项目名称:汇编源程序的上机调试操作基础训练三、实验学时:四、实验原理:(包括知识点,电路图,流程图)DEBUG 的基本调试命令;汇编数据传送和算术运算指令MASM宏汇编开发环境使用调试方法五、实验目的:1. 掌握DEBUG 的基本命令及其功能2. 学习数据传送和算术运算指令的用法3. 熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程六、实验内容:(介绍自己所选的实验内容)1. DEBUG命令的使用2. 程序的调试与运行3. 编写程序计算以下表达式:Z=(5X+2Y-7)/2设X、Y的值放在字变量V ARX、V ARY中,结果存放在字节单元V ARZ中。
七、实验器材(设备、元器件):WinXP PC机,MASM,50 ,VisulASM软件平台。
八、实验步骤:(编辑调试的过程)1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
无错时继续第3步。
3.连接目标程序,产生可执行程序。
4.用DEBUG程序调试可执行程序,记录数据段的内容。
九、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的结果进行分析)程序说明:功能:本程序完成Z=(5X+2Y-7)/2这个等式的计算结果求取。
其中X 与Y是已知量,Z是待求量。
结构:首先定义数据段,两个DB变量VARX与VARY(已经初始化),以及结果存放在VARZ,初始化为?。
然后定义堆栈段,然后书写代码段,代码段使用顺序程序设计本程序,重点使用MOV和IMUL以及XOR,IDIV完成程序设计。
详细内容见程序注释。
程序清单:DATA SEGMENTVARX DB10VARY DB10VARZ DB?DATA ENDSSTACK SEGMENT PARA STACKSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKMAIN:MOV AX,DATAMOV DS,AXMOV AL,VARXMOV AH,VARYSAL AL,1SAL AL,1ADD AL,VARXSAL AH,1ADD AL,AHSUB AL,7SAR AL,1MOV VARZ,ALMOV AH,4CHINT21HCODE ENDSEND MAIN程序框图:结束调试说明:将汇编语言(.asm文件)通过masm命令转换为目标程序(.obj 文件),通过link命令转换为目标程序可执行程序(.exe文件); 这次试验还要用-p参数以及d参数显示结果为:十、实验结论:(联系理论知识进行说明)通过本次实验,我们学习了解掌握了DEBUG 的基本命令及其功能,学习了数据传送和算术运算指令的用法,熟悉了在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
汇编语言字母大小写转换
实验1 汇编语言选择结构程序设计班级xxxxx 学号xxxxx 姓名xxxxxx实验题目:完善例子:要求连续将键盘输入的小写字母转为大写字母,字母之间用“-”号间隔;若输入大写字母则直接输出,其他字符则不处理和输出,提示重新输入。
实验目的:1. 掌握选择结构程序设计;2. 掌握跳转类指令的使用;4. 掌握MASM、LINK、DEBUG等工具的使用。
实验设备:硬件:PC机软件:DOS操作系统、编辑软件、MASM 5.0实验内容:1.程序代码DA TA SEGMENTSTR DB 'Wrong word!Please input again:$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AH,01HINT 21HMOV BL,AL ;保存在BL中MOV DL,'-' ;送‘-’号到DLMOV AH,02H ;显示‘-’INT 21H ;取回输入的字符MOV AL,BLCMP AL,'a' ;与‘a’比较JB A;小于‘a’转ACMP AL,'z' ;与‘z’比较JA EXIT ;大于‘z’转到EXITSUB AL,20H ;取大写字母MOV DL,AL ;输出MOV AH,02HINT 21HC: MOV DL,0AH ;输出换行MOV AH,02HINT 21HMOV DL,0DH ;输出回车MOV AH,02HINT 21HJMP START ;无条件转A: CMP AL,'A'JAE BJB DCMP AL,'Z'JBE BB: MOV DL,ALMOV AH,02HINT 21HLOOP CD: MOV BX,DA TA;请重新输入MOV DS,BXLEA DX,STRMOV AH,09HINT 21HLOOP BJMP STARTMOV AH,4CHINT 21HEXIT: MOV AH,4CHINT 21HCODE ENDSEND START2.调试过程如下图所示:(具体应用DEBUG指令及其结果)使用DEBUG调试过程以及程序运行结果如下所示:实验思考与总结:通过这次实验,使我对汇编语言的源程序结构有了一个系统地认识,并且掌握了选择结构程序设计,掌握了跳转类指令的使用和几种常见的DOS功能的使用;以及MASM、LINK、DEBUG等工具的使用,由于初次编写汇编程序,在实验过程中遇到了很多问题,但通过查看课本和请教老师,最终完成了实验,达到了实验的目的。
Excel之VBA常用功能应用篇:实现字母大小写转换,两个函数解决问题
Excel之VBA常⽤功能应⽤篇:实现字母⼤⼩写转换,两个函数解决问题字母转换就是⼤写字母转换为⼩写,⼩写字母转换为⼤写,如果英⽂字母有26个⼩写和26个⼤写,综合就是52个字母。
其实,符号性⽂字和表意⽂字⽐起来,优点是⽅便了许多,缺点嘛,失去了⽂化载体的价值。
英⽂有没有必要学?这是个⼴泛讨论的话题,甚⾄上升到⼀个民族兴旺与失败的地步,感觉是很⼤的⼀件事情。
总得来说⽂字语⽂只是⼀个⼯具,⼈具有学习创造和使⽤⼯具的能⼒。
那么就有必要来学习和使⽤,但不是所有⼈。
如果强加让所有⼈来学习,那么这就是⼀件⼗分重要的事情。
⾄于怎么重要,这⾥不讨论,有⼀点要说明的是,如果没有尝过英⽂,或者不知道英⽂⼤⼩写是什么东西,那么就没有必要学习编程或者本节内容。
VBA中转换⼤⼩写已经有⾃定义的函数,只需要应⽤就可以,我们不讨论,这⾥给出此两个函数,供需要的⼈学习。
⼩写转⼤写:UCase(String)⼤写转⼩写:LCase(String)本节重点讲如果实现⼩写转换的整个底层逻辑和过程,看上去有点深度,但并复杂。
xi = VBA.Len(VBA.Trim(xArr(0)))xV = VBA.CStr(VBA.Trim(xArr(0)))For i = 1 To xixss = VBA.Mid(xV, i, 1)xAsc = Asc(xss)If xAsc >= 97 And xAsc <= 122 ThenxStr = xStr & VBA.Chr(xAsc - 32)ElsexStr = xStr & xssEnd IfNext iR.Value = xStrExit Sub实际上其思想就是把单元格内字符串的每⼀个字符进⾏判断,如果是字母就转换,如果不是就不⽤处理,最后把转换的结果保存到表格⾥。
⼀句话概括的内容,就是这样。
其中,字符判断的依据是ASCII码,根据ASCII码来对⼤⼩写字母转换。
汇编实现大小写字母转换程序
汇编实现⼤⼩写字母转换程序⼀、题⽬要求编写程序,接收键盘输⼊的字符串,将其中⼤写字母转化为⼩写字母,并显⽰转化后的字符串。
键盘输⼊的字符串存于STRBUF缓冲区中,最多输⼊30个字符。
⼆、实现原理字符串是由若⼲个字符构成,⽽字符在计算机中以ASCII码形式存储,因此字符串是⼀个ASCII码序列。
⼩写字符’a’…’z’的ASCII是61H~7AH,⼤写字符A’…’Z’的ASCII是41H~5AH,因此将⼤写字母转化为⼩写字母的⽅法是:⼤写字母ASCII加上20H。
三、实验程序及流程图程序⾸先调⽤0A号功能,等待⽤户输⼊字符串,并存⼊STRBUF中。
然后对输⼊字符逐个检测,若为⼤写字符,则将其转化为⼩写字符,否则不变。
最后采⽤循环结构,使⽤02号调⽤,逐个显⽰字符串中的字符。
流程图如图4.11所⽰。
–1–图4.11 程序流程图程序代码如下。
DATA SEGMENTSTRBUF DB 30,?,31 DUP (?) ;定义键盘接收缓冲区DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:–2–第27章单⽚机实现密码锁MOV AX,DA TAMOV DS,AXLEA DX,STRBUFMOV AH,0AHINT 21H ;0A号调⽤,等待⽤户输⼊字符串MOV CL,STRBUF+1CMP CL,00JZ EXITPMOV CH,00HMOV SI,2XX1:MOV AL,STRBUF[SI] ;读取⼀个字符CMP AL,’A’JB NEXTCMP AL,’Z’JA NEXT ;判断是否是⼤写字符,ASCII在41H~5AH之间ADD STRBUF[SI],’a’-‘A’;⼤写字母ASCII值加20H NEXT:INC SILOOP XX1MOV DL,0AHMOV AH,02HINT 21H ;控制换⾏MOV CH,00MOV CL,STRBUF+1MOV SI,2XX2:MOV DL,STRBUF[SI]MOV AH,02HINT 21HINC SILOOP XX2 ;显⽰字符串EXITP: MOV AH,4CH INT 21H CODE ENDS END START –3–。