汇编程序设计从键盘输入数据并显示

合集下载

汇编语言程序设计综合设计实验项目

汇编语言程序设计综合设计实验项目

汇编语言程序设计创新实验项目1. 编写一个完整的程序:根据零件的数量和总价格,计算出零件的单价。

主程序MAINPRO允许用户在键盘上输入零件数量和总价格;子程序SUBCONV 把从键盘输入的ASCII 码转化为二进制;子程序SUBCALC 计算出零件的单价;子程序SUBDISP 把二进制表示的单价转化为十进制数并显示出结果。

要求:在程序设计时要求使用顺序、分支、循环、子程序和宏汇编等多种方法解决程序设计问题,对于较大的子程序最好使用子程序嵌套,程序中如有多次重复的代码最好使用重复汇编。

2.编写一个完整的程序,分别输入有一个班学生的百分制成绩,根据学生百分制成绩转换出五级分数制。

如低于60分为E,60-69为D、70-79为C、80-89为B、90-99为A。

并统计该班学生人数。

要求:1、学生成绩从键盘接收;2、本程序可以重复运行,自行设计退出程序的方法;3、程序具有可操作性,如,应该有提示语句和判断非法操作的方法和处理方式。

3. 编写一个完整的程序,在屏幕上显示如图所示数字拼成的形状。

01234567891234567890234567890134567890124567890123567890123467890123457890123456890123456790123456784、按要求编写一个完整的程序。

要求:1、自BUFFER开始的内存单元中,存有一个ASCII码字符串。

查找已知字符串中含有多少个子字符串‘AB’的个数,将统计结果以十进制形式显示输出。

2、在查找到子字符串‘AB’后添加空格字符。

5、按要求编写一个完整的程序。

要求:1、编写子程序SORT,将内存中10个无符号字数据由小到大排序。

2、编写子程序FIND,在上述已排好的数据区里查找某一个数,若找到,显示其在数据区的位置,否则显示‘N’字符。

3、编写调用程序,完成排序及检索任务。

6、试编写一程序,要求根据用户键入的月份在终端上显示该月的英文缩写名。

从键盘输入数据并显示实验报告

从键盘输入数据并显示实验报告

从键盘输入数据并显示实验报告一、实验目的与内容1、实验目的掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理,并在程序中设置错误出口。

2、实验内容编写程序,将键盘接收到的四位十六进制数按“Enter”回车键转化为二进制数,再显示在屏幕上, 按“空格键”结束!。

若输入的不是0-F间的数字,则显示出错信息,并要求重新输入。

二、实验设备(环境)1、实验设备(含芯片名称、功能简介)微型计算机一台2、实验环境TPC-ZK-II集成环境3、使用语言汇编语言三、实验原理(实验所用到的知识点及相关内容)1.在TPC-ZK-II集成环境下输入汇编程序,编译、连接,生成.exe文件。

2.按提示输入数据,在屏幕显示的运行结果中查看结果是否正确。

3.输入不同的数据,可得到不同的结果。

4、参考流程图四、实验步骤(包括步骤、代码、实验截图及其必要说明)编写程序,将键盘接收到的 4 位 16 进制数转换为等值的二进制数,再显示在荧光屏上。

分析:整个程序分为 3 个部分:键盘输入、转换、显示,可以分别用子程序来完成。

1. 输入。

输入可以利用字符串输入。

这时需要在主程序中先开辟一段输入缓冲区。

字符串输入 ( 0AH 功能 ),入口参数 DS : DX = 缓冲区的首地址,( DS :DX ) = 限制最多输入的字符数,功能号 AH = 0AH,类型号 21H。

出口参数 ( DS : DX+1 ) =实际键入的字符 ( 不含回车符 ),从( DS : DX+2 ) 开始顺序存放键入的字符串,回车符 0DH为串尾最后一字符。

实现功能:等待从键盘输入字符串,并存入设定的缓冲区内,同时回显字符串,光标随着移动,回车符使光标回到行首。

注意事项:应按要求先定义缓冲区,再调用。

数据缓冲区的设置如下:DATA SEGMENT ; 定义缓冲区MARK DB ?MESS DB 'input:$' ;输入字符串提示ERROR DB 0DH,0AH,'input error!',0DH,0AH,'$' ;输入错误提示DATA ENDS从键盘输入‘ ABCD ’, 回车,内存的存放结果 :子程序如下:INPUT PROCLEA DX, striMOV AH, 09H ; 调显示功能INT 21HLEA DX , maxMOV AH , 0AHINT 21H ; 调 0A输入功能RETINPUT ENDP2. 转换。

IBM-PC汇编语言程序设计课后习题答案

IBM-PC汇编语言程序设计课后习题答案

第五章试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。

答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗DEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。

答:程序段如下:DSEG SEGMENTSTORE DB 4 DUP ()DSEG ENDS┇BEGIN: MOV CL, 4 ;右移四次MOV CH, 4 ;循环四次LEA BX, STOREA10: MOV DX, AXAND DX, 0FH ;取AX的低四位MOV [BX], DL ;低四位存入STORE中INC BXSHR AX, CL ;右移四次JNZ A10 ;循环四次完了码B10: MOV DL, STORE ;四组数分别放在AL、BL、CL和DL中MOV CL, STORE+1MOV BL, STORE+2MOV AL, STORE+3STOP: RET试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。

计算机组成原理实验1-汇编语言实验

计算机组成原理实验1-汇编语言实验

微处理器与接口技术实验指导实验一监控程序与汇编语言程序设计实验一、实验要求1、实验之前认真预习,明确实验的目的和具体实验内容,设计好主要的待实验的程序,做好实验之前的必要准备。

2、想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果。

3、在教学实验过程中,要爱护教学实验设备,认真记录和仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。

4、实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。

善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。

二、实验目的【1】学习和了解TEC-XP16教学实验系统监控命令的用法;【2】学习和了解TEC-XP16教学实验系统的指令系统;【3】学习简单的TEC-XP16教学实验系统汇编程序设计。

三、实验注意事项(一)实验箱检查【1】连接电源线和通讯线前TEC-XP16实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP16实验系统上的芯片和PC机的串口造成损害。

【2】五位控制开关的功能示意图如下:【3】几种常用的工作方式【开关拨到上方表示为1,拨到下方为0】(二)软件操作注意事项【1】用户在选择串口时,选定的是PC机的串口1或串口2,而不是TEC-XP16实验系统上的串口。

即选定的是用户实验时通讯线接的PC机的端口;【2】如果在运行到第五步时没有出现应该出现的界面,用户需要检查是不是打开了两个软件界面,若是,关掉其中一个再试;【3】有时若TEC-XP16实验系统不通讯,也可以重新启动软件或是重新启动PC再试;【4】在打开该应用软件时,其它的同样会用到该串口的应用软件要先关掉。

(三)联机通讯失败自检如果上述的硬件和软件的操作都正确,联机却依旧失败,可以进行如下测试:【1】测试PC机的串口是否能正常工作,或是换一台PC或换同一台PC的另一个串口再试,在换串口时要将TEC-XP16实验系统断电,换完后重新启动实验系统和软件;【2】检查机器上的元器件插接是否正确(建议用户对照能够正常通讯的实验系统进行详细检查),有没有被学生动过,尤其是扩展内存和扩展I/O接口时,芯片方向是否插对,片选信号有没有连接;【3】检查相应的短路子是否连接正确;【4】建议教师预留一台运行正常的TEC-XP16实验系统备用,机器出问题后可以对照检查。

数据的输入和输出及顺序结构程序设计

数据的输入和输出及顺序结构程序设计

一、格式化输出
格式: 格式控制串” 输出项列表) 格式:printf(“格式控制串”,输出项列表 格式控制串 功能: 功能:按指定格式向显示器输出数据
一、格式化输出
例ch4_001 main() {int a; 输出变量的值 float b; char c; a=12; b=123.456; c='d'; printf(“a=%d,b=%f,c=%c",a,b,c); }
一、格式化输出
例ch4_002 main() {int a=4; float b=2; char c=‘a’; printf("a=%5d,b=%5.1f,c=%5c\n",a,b,c); printf("a=%-5d,b=%-5.1f,c=%-5c\n",a,b,c); } %[修饰符 格式字符 修饰符]格式字符 修饰符 格式字符: 修饰符常用的有:整数、 、 、 (小写字母) 修饰符常用的有:整数、-、 +、l(小写字母) %ld.表示输出十进制长整型 表示输出十进制长整型 %lf:表示按 型输出。 :表示按double型输出。 型输出 %-5d,表示输出整数占 个字符宽,左对齐。 表示输出整数占5个字符宽 表示输出整数占 个字符宽,左对齐。 %+d,表示在整数前加 号 表示在整数前加+号 表示在整数前加
运行结果:A B 注意 :putchar()函数本身没有换行 的功 能!
字符的输入和输出
/*ch4_010.c*/ #include <stdio.h> void main() { int c; printf("Enter a character:"); c=getchar(); printf("%c--->hex%x\n",c,c); }

汇编语言程序代码

汇编语言程序代码

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 码显示

汇编语言实现用16位乘法指令完成32位无符号数乘法

汇编语言实现用16位乘法指令完成32位无符号数乘法

汇编语⾔实现⽤16位乘法指令完成32位⽆符号数乘法《微型计算机原理与接⼝技术》实验报告⼀、程序设计题⽬⼀三⼗⼆位⽆符号乘法1 设计分析:(1)程序设计任务:⽤⼗六位乘法指令完成三⼗⼆位⽆符号数乘法(结果64位)。

使⽤MUL指令,完成双字⽆符号数乘法程序,要求乘数和被乘数从键盘输⼊,结果显⽰于屏幕上。

(2)程序设计要求:1)从键盘输⼊两个乘数(⼗六进制)2)结果显⽰于屏幕上(⼗六进制)(3)程序设计过程:1) 定义数据段⽤于开辟缓冲区存储输⼊数据、输出数据和乘积。

2)从键盘分别输⼊两个⼋位数字符(三⼗⼆字节)存⼊缓冲区(分4次输⼊,每次输⼊4个字符,前两次为被乘数的⾼位与低位,后两次为乘数的⾼位与低位)3)对缓冲区输⼊的字符进⾏处理,让Ascal码转换为数值本⾝的数值。

4)把三⼗⼆位分割成两位⼗六位,分别对其进⾏⼗六位的乘法。

5)将四个⼗六位乘法的乘积按照各⾃的位相加的最终乘积6)对所得结果进⾏处理,让Ascal码转换为数值本⾝的数值7)将结果向屏幕输出。

2、算法(⼀个框代表16位2进制数)3、X2 X1y1P+6 p+4 p+2 p4、程序流程图:5、测试数据与运⾏结果:输⼊被乘数的⾼位的4个字符X2:输⼊被乘数的低位的4个字符X1:输⼊乘数的⾼位的4个字符y2:输⼊乘数的低位的4个字符y1:运⾏结果:6、程序源代码及注解:ddata segmenty1 dw 16 dup(?)y2 dw 16 dup(?)p dw 30 dup(?)keybuf db 10 dup(?)ddata ends ;定义数据段ccode segmentassume cs:ccode,ds:ddatastart:mov ax,ddatamov ds,axmov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4shr ax,4mov dh,almov ah,[bx+4]mov al,[bx+5]shl al,4shr ax,4mov dl,almov x2,dx ;输⼊被乘数的⾼位的4个字符x2 mov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4mov ah,[bx+4]mov al,[bx+5]shl al,4shr ax,4mov dl,almov x1,dx ;输⼊被乘数的低位的4个字符x1 mov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4shr ax,4mov dh,almov ah,[bx+4]mov al,[bx+5]shl al,4shr ax,4mov dl,almov y2,dx ;输⼊乘数的⾼位的4个字符y2 mov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4shr ax,4mov dh,almov ah,[bx+4]mov dl,almov y1,dx ;输⼊乘数的低位的4个字符y1mov ax,x1mov dx,y1mul dxmov [p],axmov [p+2],dx ;被乘数低位4字符x1和乘数低位4字符y1相乘结果低位存⼊p,⾼位存⼊p+2mov ax,x2mov dx,y1mul dxadd [p+2],axadc [p+4],dx ;被乘数⾼位4字符x2和乘数低位4字符y1相乘结果低位存⼊p+2,⾼位存⼊p+4mov ax,x1mov dx,y2mul dxadd [p+2],axadc [p+4],dxadc [p+6],0 ;被乘数低位4个字符x1和乘数⾼位4个字符y2相乘结果低位存⼊p+2,⾼位存⼊p+4mov ax,x2mov dx,y2mul dxadd [p+4],axadc [p+6],dx ;被乘数⾼位4个字符x2和乘数⾼位4个字符y2相乘结果低位存⼊p+4,⾼位存⼊p+6mov al,byte ptr p+7 ;输出call dispalmov al,byte ptr p+6call dispalmov al,byte ptr p+5mov al,byte ptr p+3call dispalmov al,byte ptr p+2call dispalmov al,byte ptr p+1call dispalmov al,byte ptr pcall dispalmov ah,4chint 21hdispal proc ;⼦程序屏幕输出过程push cxpush dxpush axmov cl,4shr al,clor al,30hcmp al,3ahjb br1add al,7BR1: mov dl,almov ah,2int 21hpop axand al,0fhor al,30hcmp al,3ahjb br2add al,7br2: mov dl,almov ah,2int 21hretdispal endpccode endsend start题⽬⼆递归调⽤⼦程序设计1、设计分析:(1)程序设计任务:有n个⼈坐在⼀起,第n个⼈⽐第n-1个⼈⼤h岁。

山东大学汇编语言上机实验——实验五

山东大学汇编语言上机实验——实验五

子程序设计2.6显示学生名次表rank编制一个程序,要求接受键盘输入的一个班的学生成绩,并存放于一个50字的grade数组中,其中grade+i保存学号为I+1的学生成绩。

然后根据grade中的学生成绩,把学生成绩依次填入50字的rank数组中,其中rank+i的内容是学号为i+1的学生的名次。

再按学号顺序把名次从终端上显示出来。

本题要做的主要工作和例2.2的内容是完全一样的,只是增加了由用户键入学生成绩及输出学生名次两个部分的内容,因此这三个部分可以用子程序结构来完成。

子程序结构划分的层次图如图2.17所示,可以看出,main为主要模块,其下一层的三个模块为程序的三大部分。

现将各模块说明如下:1.模块名:main 为总模块输入:从键盘输入一个班的学生成绩输出:显示一个班的学生成绩功能:根据输入的学生成绩,计算并显示学生名次。

算法如下:一个学生名次等于成绩高于该学生的人数+1.2.模块名:input输入:以学号为序型键盘输入一个班的学生成绩。

各个成绩之间用逗号隔开,最后以回车符号结束。

输出:把一个班的学生成绩存入grade数组。

功能:接受一个班的学生成绩。

调用子模块decibin把键盘输入的一个十进制数转换为二进制数。

调用子模块crlf完成回车,换行功能。

3.模块名:rankp输入:从grade数组取得一个班的学生成绩。

输出:以学号为序计算出该班每个学生的名次存入rank数组。

功能:计算一个班的学生成绩。

算法为:一个学生的名次等于成绩高于该生的学生人数加1.4,。

模块名;output输入:把rank数组取得一个班的学生名次。

输出:把一个班的学生名次以学号为序在总端上显示出来。

功能:先是一个班的学生名次。

调用子模块decibin把键盘输入的一个十进制数转换为二进制数。

调用子模块crlf完成回车,换行功能。

5:模块名:decilin输入:从键盘输入一个十进制数。

输出:把该数转换成二进制数并存入BX寄存器中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微型计算机原理及应用实验教程
实验二从键盘输入数据并显示
一实验目的:掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理,并在程序中设置错误出口。

二实验内容: 编写程序,将键盘接收到的四位十六进制数转换为等值的二进制数,再显示在屏幕上。

若输入的不是0-F间的数字,则显示出错信息,并要求重新输入。

三实验程序:
DATAS SEGMENT
DATA1 DB 17 DUP(?)
DATA2 DB'Fault',0DH,0AH,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
L7:LEA BX,DATA1
MOV CX,4
L2:MOV AH,1
INT 21H
CMP AL,'F'
JA L6
CMP AL,'A'
JAE L5
CMP AL,'9'
JA L6
CMP AL,'0'
JAE L5
L6:LEA BX,DATA2 CALL CCXS
JMP L7
L5:CMP AL,40H
JB L4
SUB AL,7
L4:SUB AL,30H
PUSH CX
MOV CX,4
SHL AL,CL
L1:SHL AL,1
MOV AH,0
ADC AH,30H
MOV [BX],AH
INC BX
LOOP L1
POP CX
LOOP L2
LEA BX,DATA1
MOV [BX+16],'$'
CALL CCXS
MOV AH,4CH
INT 21H
CCXS PROC FAR
MOV DX,BX
MOV AH,9
INT 21H
RET
CCXS ENDP CODES ENDS
END START。

相关文档
最新文档