编写程序段从键盘接收一个字符,微机原理与接口技术?

作者&投稿:长沙勇 (若有异议请与网页底部的电邮联系)
微机原理与接口技术大作业,编写汇编语言源程序,要求从键盘输入全班学生信息~

这个程序很复杂,这个问题学会了,汇编语言也就基本过关了。下面给出输入和原始顺序分数输出,重点说明结构数据的使用,供参考: STUD STRUC NO DB 10,?,10 DUP(?) XM DB 20,?,20 DUP(?) CJ DB 6,?,6 DUP(?) SCORE DW ? STUD_LEN EQU $-NO STUD ENDS DATA SEGMENT STUDS STUD 100 dup() NUM DW 0 NOMSG DB 13,10,13,10,'please input the number of student: $' XMMSG DB 13,10,'please input the name of student: $' CJMSG DB 13,10,'please input the score of student: $' CONTMSG DB 13,10,13,10,'Are you want to continue(y/n)? $' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,SEG DATA MOV DS,AX MOV ES,AX LEA DI,STUDS @0: LEA DX,NOMSG MOV AH,9 INT 21H LEA DX,[DI].NO MOV AH,0AH INT 21H LEA DX,XMMSG MOV AH,9 INT 21H LEA DX,[DI].XM MOV AH,10 INT 21H LEA DX,CJMSG MOV AH,9 INT 21H LEA DX,[DI].CJ MOV AH,10 INT 21H ; 以下计算score MOV WORD PTR [DI].SCORE,0 LEA SI,[DI].CJ MOV CL,[SI+1] MOV CH,0 @@CJ: MOV AX,[DI].SCORE MOV BX,10 MUL BX MOV DX,AX MOV AL,[SI+2] SUB AL,30H MOV AH,0 ADD AX,DX MOV [DI].SCORE,AX INC SI LOOP @@CJ INC WORD PTR NUM ADD DI,STUD_LEN LEA DX,CONTMSG MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,'n' JE @2 JMP @0 @2: MOV AH,2 MOV DL,13 INT 21H MOV DL,10 INT 21H MOV CX,NUM LEA DI,STUDS @@OUT: MOV AX,[DI].SCORE CALL DISPAX ADD DI,STUD_LEN LOOP @@OUT @EXIT: MOV AH,4CH INT 21H;============================================== DISPAX PROC NEAR PUSH BX PUSH CX PUSH DX PUSH SI PUSH DS PUSH AX MOV AH,2 MOV DL,' ' INT 21H POP AX PUSH CS POP DS MOV BYTE PTR NZ,0 PUSH AX LEA SI,DIVARR MOV CX,5 @@1: POP AX MOV DX,0 MOV BX,[SI] DIV BX PUSH DX CMP AL,0 JNE @@2 CMP BYTE PTR NZ,1 JE @@2 CMP CX,1 JE @@2 MOV DL,20H JMP @@3 @@2: ADD AL,30H MOV DL,AL MOV BYTE PTR NZ,1 @@3: MOV AH,2 INT 21H INC SI INC SI LOOP @@1 POP DX POP DS POP SI POP DX POP CX POP BX RET DIVARR DW 10000,1000,100,10,1 NZ DB 0 DISPAX ENDP;=============================================== CODE ENDS END START 建议编制这些子程序:串结构数组排序子程序、串结构数据交换子程序

1,首字单元AAA40H 末字单元AAA80H A7F00+2B40=AAA40 为什么在A7F0后+个0这个老师应该上课讲过,这是因为8086微处理器与内存存储器之间所有信息交换都要使用20位物理地址,而在程序中所涉及的地址都是16位的逻辑地址,所以在计算时是通过将16位段基址左移4位再加上16位段内偏移量而生成的 AAA40+40H=AAA80 32个字转换成十六进制就是20H个字,换成字节就是40H个字节 2,起始地址是61000H,末地址是70FFFH 61000没什么好解释了,同上 段内最大偏移量是0FFFFH 所以70FFFH=61000H+0FFFFH 3, XOR AH, AH ;AH清0 SAL AX, 1 ;AX算数左移1位 MOV BX, AX ;把AX放到BX(BX是原始AX的2倍) MOV CL, 2 ;CL=2 SAL AX, CL ;再把AX算数左移2位(此时AX是原来的8倍) ADD AX, BX ;两数相+ 其实就是8x+2x=10x,算一个数的10倍

从键盘接收一个字符,如为'Y',跳转到标号YES,输出"YES",

等待下次字母输入;如为'N',跳转到标号'NO',输出"NO",并退出程序.
如果键入的字符既不是'Y',也不是'N',输出"Please input a letter"并等待输入字符.
要求对键入的大写字母和小写字母同样处理.
 
键入、输出,你用的什么硬件?
可以调用操作系统的例程吗?

1)将06A6H单元的内容2113存入AX;-5261---MOV AX, [06A6H]
2)将06A6H单元的内容存入BX;4102----MOV BX, [06A6H]

3)将立即1653数回32H存入CL,立即数08FFH存入DI;
MOV CL, 32H
MOV DI, 08FFH

4)将立即数0400H存入SI,立即数08FFH存入DI;
MOV SI, 0400H
MOV DI, 08FFH

5) 将立即数1234H存入存储单元答0940H。
MOV WORD PTR DS:[0940H], 1234H


1. 用C语言写一段程序:从键盘上输入两数,判断其大小关系,将判断结果显 ...
1.include <stdio.h> include <string.h> int main(void){ int nNum1,nNum2;printf("请输入第一个整数:");scanf("%d",&nNum1);printf("\\n请输入第二个整数:\\n");scanf("%d",&nNum2);printf("\\n输入的两个数为:%d,%d,其大小关系为:",nNum1,nNum2)if(nNum1 < nNum2)...

阅读下面程序段,写出其功能 MOV AH,00 INT 16H MOV AH,0AH MOV CX...
首先你要知道什么什么是中断,以下用了2中中断,分别是16号和第10号中断。16号中断 AH=00 从键盘接收一个字符 MOV AH,00 INT 16H 10号中断 AL=0AH 其中BH=显示页 AL=字符 CX=字符重复次数 MOV AH,0AH MOV CX,00 MOV BH,00 INT 10H 就是先接收一个字符,然后在第0页第一行,输出1...

用汇编语言编写:从键盘输入一个字母,然后程序使得屏幕再出现该字母之...
; 本程序通过编译,运行正确。Code Segment Assume CS:Code,DS:Code KBEsc equ 1BH PromptStr DB 'Please input a letter(Esc to exit): $'Start: push cs pop ds ;使数据段与代码段同段 Begin: lea dx,PromptStr mov ah,9 int 21h mov ah,1 int 21h cmp ...

跪求答案啊,谢谢各位了:以完整的汇编语言源程序结构编写实现以下要求的...
INPUT: ;通过17次循环从键盘读入字符 MOV AH, 1 INT 21H MOV [BUFFER+SI], AL INC SI DEC CX CMP CX,0 JNZ INPUT ;不为0则跳转 --- 输入部分完成,接下来是数据转移到DATA,用17次循环,注意寄存器清零 MOV AL,[BUFFER+SI]MOV [DATA+NUM],AL ;NUM自己定义吧 INC SI ADD NU...

有如下程序段,从键盘输入数据的正确形式应是( )。(注:└┘代表空格...
选项C是正确的输入方式。输入时,scanf语句中双引号之间的内容,除了%d用输入的内容(此处是数字)代替之外,其他内容必须按原样从键盘上输入,系统才能正确读取要输入的变量值。有什么问题请留言。

求一段8086汇编语言程序设计,将键盘接收到的代表四位十六进制数的字符转...
;--- ;程序名称:DIS_DEC ;功能:通过DOS功能调用显示十进制数最大65535 ;入口参数:AX ;出口参数:无 ;临时空间:CX ;调 用:HEXTOASCII ;作 者:;创建日期:2009-11-06 ;创建时间:23:12 ;程序版本:;--- DIS_DEC PROC MOV DX, 0 MOV BX, 10000 DIV ...

试编写一段程序,完成从键盘输入一个10以内的数字,在屏幕上输出这个数字...
include <stdio.h> int main(int argc, char *argv[]) { int a = 0;scanf("%d", &a);printf("%d", a*a*a);}

c语言考试 编写三个程序: 1.从键盘输入一些字符,逐个把它们送到磁盘上去...
下面三段程序代码都是我在VC6.0编译器上调试通过的.请给分 \/\/test1-2.c include <stdlib.h> include <stdio.h> int main(){ FILE *fp = fopen("file1.dat", "w+");char ch;if( !fp ){ printf("Failed to open file:file1.dat.\\n");exit(0);} while((ch = getchar()) !

c语言:程序设计
include "conio.h"#include<stdio.h>#include<string.h>#include<stdlib.h> int main(){ char a[]="123456"; \/\/ 密码char ch;char st[20]; int i,k=1; \/\/k用于统计输入密码的次数 A:printf("请输入密码:");i=0;ch=getch(); \/* getch()函数从键盘接收字符,不在屏幕...

编写一段程序,要求通过键盘一个输入字符,将输入的字符分为数字、大写...
switch(a) case(a<65): 这个使用错误,因为case的值要是常量,不能像你那样写,你要想个办法将这个表达式转为常量。建议改成else if结构就可以。另外数字的编码是48--57.include <stdio.h>void main(){ char a; printf("Pease enter a character:\\n"); scanf("%c",&a);if(a>...

龙门县19722756386: 用c编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字 -
勤叛抗肿: #include int main() {char s[100],c='a';int i;gets(s);for(;c<='z';c++){for(i=0;i<100;i++){if(c==s[i]){printf("%c",c);break;}}}printf("\n");return 0; } 这样就行了 我表示你的break;由于没加括号 他会使其退出第一层循环 所以有错 加一对花括弧就行了 你试试

龙门县19722756386: 用C++编写一个程序,从键盘接受一个字符串,按照字符从小到大的顺序排序,并删除相同的字符 -
勤叛抗肿: //这个问题太适合使用桶排序了//注:只处理ASCII码#include#include using namespace std; void initial(int data[],int length){ for(int i=0;i} int main(){ char str[10000]; int reg[128];//ASCII码的最大编码是126,所以大小为128足够了 int str_length;//输...

龙门县19722756386: 编写一个c程序,要求从键盘输入一个字符并显示?希望给出详细的步骤! -
勤叛抗肿: #include<stdio.h> void main() {char c; //定义一个字符scanf("%c",c); //输入一个字符printf("%c",c);//输出一个字符 }

龙门县19722756386: 编写一个程序,从键盘上读取一个字符,然后再显示读取的字符 -
勤叛抗肿: #include<stdio.h>#include<string.h> void main() { char x; printf("请输入字符:"); scanf("%s",&x); printf("逆序输出为:"); printf("%c",x); }

龙门县19722756386: 汇编怎样编写从键盘接收字符串的程序 -
勤叛抗肿: DATAS SEGMENT STR DB"please input a string:$" BUF DB 20 ;这里的20为指定存放字符的个数(理论上的) DB ? ;这的?可变,实际存放字符的个数(系统自动计算) DB 20 DUP (?) ;这里的20是你在数据段开辟的空间 CRLF ...

龙门县19722756386: 编程题:接收用户通过键盘输入的一个字符,并将其输出 -
勤叛抗肿: 不知道你是需要什么编程语言的代码……给你一个Perl的实现: =====code=================== #!usr/bin/perlprint "Please enter a character:"; $i = <STDIN>; print "The character you typed is:\n$i\n"; =====code===================

龙门县19722756386: 【VB】编写一个程序,从键盘接收一个字符串,并将其显示在窗体上. -
勤叛抗肿: a = InputBox("请输入一个字符串") Print "你输入的字符串是:"; a

龙门县19722756386: 如何编写一个汇编程序,要求“从键盘接收一个四位的16进制数,并在终端上显示与它等值的二进制数”? -
勤叛抗肿: 试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来.1. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符.2. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续...

龙门县19722756386: 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符.(汇编语言 -
勤叛抗肿: .model small.386.code MAIN PROC FAR start:push ds sub ax,ax push ax input:mov ah,7H int 21H cmpe:cmp al,20H JE exit cmp al,61H JL input cmp al,7AH JG input print:sub al,01H mov dl,al mov ah,02H int 21H add al,01H mov dl,al mov ah,02H int ...

龙门县19722756386: 利用指针编写程序,实现从键盘输入一个字符串,将此字符串从m个字符开始的n个字符复制成另一个字符串 -
勤叛抗肿: #include void fun(char *s1,int m,char *s2) { for(s1+=m;*s1;*s2++=*s1++); *s2='\0'; } void main() { char s1[100],s2[100]; int m; printf("输入字符串:"); gets(s1); printf("输入开始复制位置:"); scanf("%d",&m); fun(s1,m,s2); printf("复制的字符串:%s",s2); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网