汇编语言的命名规则是什么啊?急急急!!!!!!
; 题目名称:评委打分,去掉一个最高分、一个最低分,求平均得分,保留1位小数
; 题目来源:http://zhidao.baidu.com/question/130197847.html
; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。
Code Segment
Assume CS:Code,DS:Code
CR equ 000DH
LF equ 000AH
KBBack equ 0008H
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
; 功能:在当前光标位置显示一个字符
; 入口:dl=要显示的字符
Output_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Output_Chr Endp
; -------------------------------------
; 功能:取光标位置
; 入口:无
; 出口:DH=行号,DL=列号
GetCursor Proc Near
PUSH DS
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH CS
POP DS
XOR BX,BX
MOV AH,3
INT 10H
MOV Cursor_Row,DH
MOV Cursor_Col,DL
POP DX
POP CX
POP BX
POP AX
POP DS
RET
Cursor_Row DB ?
Cursor_Col DB ?
GetCursor EndP
; -------------------------------------
; 功能:置光标位置
; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)
SetCursor Proc Near
PUSH DS
PUSH DX
PUSH CX
PUSH BX
PUSH AX
PUSH CS
POP DS
MOV DH,Cursor_Row
MOV DL,Cursor_Col
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
POP DX
POP DS
RET
SetCursor EndP
; -------------------------------------
; 功能:键盘输入一个指定位数(N)的十进制数字,将其转换成二进制数并保存在指定的内存单元。
; 输足N位的,自动结束输入;不足N位的,空格结束输入。
; 由于限定最大数据类型为字,所以,数字位数最多:5,最大无符号数:65536
; 约定:直接回车,视为数字0
; 入口:cs:@@Digits=数字位数;es:di=保存输入的数字首地址
; cs:@@Type_Data=保存的数据类型,B=字节类型,W=字类型。
; 出口:转换后的二进制数保存在di所指的单元
Input_Dec Proc Near
push ds
push dx
push cx
push bx
push di
push cs
pop ds
call GetCursor ;取光标位置
mov dx,WORD PTR Cursor_Row
mov @@Tmp_Cursor,dx ;保存起始光标位置
lea di,@@Save_Tmp
push di
cld
mov cl,@@Digits
xor ch,ch
push cx
@@Input_Dec: call GetCursor ;取光标位置
mov ah,1 ;从键盘接受一个字符
int 21h
cmp al,20h ;若键入的是空格,已经键入的数字不足N位
jz @@ASC_Dec ;转去处理已经键入的数字
cmp al,KBBack
jz @@KB_Back ;若是回空键,重新输入
cmp al,'0'
jb @@KBBack ;若低于数字'0',重新输入
cmp al,'9'
ja @@KBBack ;若高于数字'9',重新输入
jmp @@Save_Dig
@@KB_Back: cmp cl,cs:@@Digits ;十进制数字位数
jz @@Input_Dec
inc cx
dec di
dec Cursor_Col
@@KBBack: call SetCursor ;置光标位置
jmp @@Input_Dec
@@Save_Dig: and al,0fh ;转换成二进制数
stosb ;保存
loop @@Input_Dec ;接受下一个数字
@@ASC_Dec: mov ax,cx
pop cx
pop si
sub cx,ax ;实际输入的数字位数
xor bp,bp
xor dx,dx
xor ax,ax
jcxz @@Save_Ret ;若直接空格,没有输入任何数字,按输入'0'处理
dec cx ;实际输入的数字位数减1,准备把输入的这一串数字转换成二进制数
jcxz @@One_Digit ;若输入的数字只有一位,转去直接保存这个二进制数
mov bx,10
@@Mul_Ten: lodsb
xor ah,ah
add ax,bp
mul bx
mov bp,ax
loop @@Mul_Ten
@@One_Digit: lodsb
xor ah,ah
add ax,bp
@@Save_Ret: pop di
cmp @@Type_Data,'B' ;字节类型?
jz $+5
stosw
jmp $+3
stosb
pop bx
pop cx
pop dx
pop ds
ret
@@Tmp_Cursor dw ? ;起始光标位置
@@Digits db ? ;十进制数字位数
@@Type_Data db 'B' ;保存的数据类型。B=字节类型,W=字类型
@@Save_Tmp db 16 dup(?)
Input_Dec EndP
; -------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[5]
mov BYTE PTR [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 6 dup(?)
Dec_ASCII EndP
; -------------------------------------
; 功能:把AL中的二进制无符号数作为小数转换成显式的十进制ASCII码,
; 并送显示屏显示,未考虑四舍五入
; 入口:AH=二进制数,BH=除数,CX=保留小数位数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_Frac Proc Near
push ax
mov dl,'.'
call Output_Chr ;显示一个小数点
pop ax
mov bl,10 ;乘数
@@Dec_Frac: mov al,ah ;余数不为0,处理小数部分
mul bl ;余数乘10,继续做除法
div bh ;除以除数,取商数作为结果的一位小数
or al,30h
mov dl,al
call Output_Chr ;显示一位小数
loop @@Dec_Frac
ret
Dec_Frac EndP
; -------------------------------------
Teachers equ 7 ;评委人数
Temp_Cursor dw ? ;评委打分时,当前分数光标位置
Grades db Teachers dup(?) ;Teachers位评委给出的分数
Prompt_Str1 db 'Please input ',Teachers or 30h,' grades(0-9): $'
Prompt_Str2 db CR,LF,CR,LF,'The decreased grades: $' ;由高到低排序后的评分,提示信息
Last_Grade db CR,LF,CR,LF,'The last everage grade: $' ;平均得分
Press_Key db CR,LF,CR,LF,'Press any key to exit...$'
; -------------------------------------
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
; -------------------------------------
; 1. 从键盘上输入7名裁判的评分(输入范围是0~9);
Output Prompt_Str1 ;提示评委亮分
lea di,Grades ;分数存放地址
mov @@Digits,1 ;数字位数
mov @@Type_Data,'B' ;保存的数据类型,B=字节类型,W=字类型
mov cx,Teachers ;评委人数
Input_Grades: call GetCursor ;取光标位置
mov dx,WORD ptr Cursor_Row
mov Temp_Cursor,dx ;保存当前光标位置
call Input_Dec ;从键盘输入一位评委的打分
cmp cx,1
je @@Next_0
mov dx,Temp_Cursor
add dh,2
mov Cursor_Row,dl
mov Cursor_Col,dh
call SetCursor ;置光标位置
mov dl,20h ;空一格
call Output_Chr ;显示一个字符
@@Next_0: loop Input_Grades ;下一个评委的打分
; -------------------------------------
; 2. 将7个评分由高到低进行排序,并在显示器上显示出来;
cld
lea si,Grades ;评分存储区地址
mov cx,Teachers-1 ;外循环次数
@@Scanning: push cx ;入栈保存外循环次数
push si ;入栈保存数组地址
@@Compare: push si
pop di ;当前数组元素地址赋给目的变址寄存器,以备交换之用
lodsb ;将当前数组元素读入累加器
cmp al,[si] ;当前数组元素与相邻的下一个数组元素相比较
jae @@NextOne ;若大于或等于,不作数据交换,处理下一个数组元素
xchg al,[si] ;若小于,交换数组元素,递减排序
stosb ;保存数值较小者
@@NextOne: loop @@Compare ;处理下一个数组元素
pop si ;数组地址出栈
pop cx ;外循环次数出栈
loop @@Scanning ;下一趟比较
Output Prompt_Str2 ;由高到低排序后的评分
lea si,Grades ;评分存储区地址
mov cx,Teachers ;评委人数
@@List_Grades: lodsb ; 提取成绩
xor ah,ah
call Dec_ASCII ;显示成绩
cmp cx,1
je @@Next_1
mov dl,20h
call Output_Chr ;显示一个字符
@@Next_1: loop @@List_Grades
; -------------------------------------
; 3. 扣除一个最高分,一个最低分,计算出其他5项评分的平均值(保留一位小数)在显示器上输出
lea si,Grades[1] ;去掉一个最高分之后的评分地址
mov cx,Teachers-2 ;评委人数-2
xor ah,ah ;总分初值
Addition: lodsb
add ah,al ;累加各评委分数
loop Addition
push ax
Output Last_Grade ;提示显示平均分
pop ax
xchg ah,al
xor ah,ah
mov bl,Teachers-2
div bl ;平均分取整数部分
mov bh,ah ;保存余数
xor ah,ah
call Dec_ASCII
mov ah,bh ;余数
mov bh,bl ;除数
mov cx,1 ;保留小数位数
call Dec_Frac ;把AL中的二进制无符号数作为小数转换成显式的十进制ASCII码
; -------------------------------------
Exit_Proc: Output Press_Key ;提示操作完成,按任意键结束程序
mov ah,1
int 21h
mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
规则如下:
(1)字符个数:1-31个。
(2)标识符的第1个字符必须是字母、问号“?”、“@”或下划线“_”这4种字符中的一个。
(3)从第2个字符开始,可以是字母、数字、?、@、或_。
(4)不能使用属于系统的专用保留字。
扩展资料:
汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在底层,通常是程序优化或硬件操作的场合。
参考资料来源:百度百科-汇编语言
(1)字符个数:1-31个
(2)标识符的第1个字符必须是字母、问号“?”、“@”或下划线“_”这4种字符中的一个
(3)从第2个字符开始,可以是字母、数字、?、@、或_
(4)不能使用属于系统的专用保留字
变量名的命名规则
变量名是什么 变量代表了一个存储单元,其中的值是可变的,故称为变量。变量名、常量名、函数名、数组名等等,都是为了区分程序中不同的实体、人为起定的名字。通常把这些名字叫做标识符。标识符的`命名规则如下:标识符可由三类字符:字母、下划线、数字组成;标识符只能由字母或下划线开头;标识符不能...
C语言命名规范
匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。匈牙利命名法的主要思想是:在变量和函数名中加入前缀以增进人们对程序的理解。它是由微软内部的一个匈牙利人发起使用的,结果它在微软内部逐渐流行起来,并且推广给了全世界的Windows开发人员。下面将介绍匈牙利...
单片机汇编语言程序每段程序可以随便命名吗
单片机汇编语言程序每段程序名(即标号)的命名是有规则约束的:1、不能是与汇编语言中的关键字同名,比如MOV、ADD、Ac、DB,DW,END等等;2、标号的第一个字符必须是字母,一般由字符、数字和下划线组成;3、标号长度不能超过8个字符;4、标号就以“:”结束。
函数名区分大小写
函数名的命名规则:1、简洁明了:函数名应该简洁明了,能够清晰地表达函数的用途。避免使用过于复杂的单词或短语,尽量使用常用词汇和简短描述。2、小写字母开头的驼峰命名法:许多编程语言通常使用小写字母开头的驼峰命名法来命名函数。例如,my_function。3、避免使用保留字:函数名不能与编程语言的保留字...
变量名的命名规则
变量名的命名规则因编程语言而异,但以下是一些通用的建议:有意义、使用驼峰命名法、避免使用单个字母、避免使用中文或特殊字符。1、有意义:变量名应简洁明了地表达变量的含义,例如:temperature表示温度,count表示计数。2、使用驼峰命名法:变量名中每个单词的首字母大写,除第一个单词。例如:student...
函数的命名规则与变量命名规则相同
2、使用驼峰命名法(Camel Case)驼峰命名法是一种常见的命名约定,其中每个单词的首字母大写,其余字母小写。例如,getName()、myVariable等。这种命名法可以使名称更易于阅读和理解。3、遵循命名规范 不同的编程语言和开发团队可能有自己的命名规范,例如使用特定的前缀或后缀来表示不同的类型或作用域。
合法的变量名 概念要求
变量命名规则:变量名首字母必须为字母(a-z A-Z),下划线(_),或者美元符号($)开始,php编程中所有变量必须以$开始。(有些编译器已经支持中文变量名了)变量名只能是字母(a-z A-Z),数字(0-9),下划线(_)的组合,并且之间不能包含空格,数字不能放在变量名首位。变量名不能使用编程语言的保留...
c语言的标识符的作用是什么?
标识符(IDentifier)是指用来标识某个实体的一个符号。c语言中标识符的命名规则如下:标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数字,但可以是字母或者下划线。例如,正确的标识符:abc,a1,prog_to。不能把C语言关键字作为用户标识符,例如if ,for, while等....
命名规则包括什么
3. 可读性:名称应易于阅读和拼写。避免使用过于复杂的词汇或过于专业的术语。4. 避免冲突:避免与现有的商标、名称或其他已广泛接受的名字发生冲突。5. 国际化:如果您的产品或服务面向全球市场,那么您的命名规则应该考虑到不同地区的文化差异和语言习惯。6. 标识性:名称应该能够清晰地传达实体的性质...
标识符的命名规则
标识符(identifier)是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。在程序设计语言中,标识符是用作程序的某一...
夕奚康丽: en
旬邑县19599826078: arm汇编的符号命名和书写规则有哪些 - ?
夕奚康丽: 特殊符号 ---- 对应指令 ---- 含义 ---- 示例 ^ ---- MAP ---- 定义结构化内存表 ---- MAP 4096;内存表首地址为4096 # ---- FIELD ---- 定义内存表中的数据,结合MAP指令使用 ----MAP 4096STACKSVC FIELD 256;定义从4096开始的256字节为...
旬邑县19599826078: c语言可不可以调运,汇编里申请的地址,变量. 如果可以,如何调用? - ?
夕奚康丽: 可以.具体方式,在不同的C编译系统里可能有细节的规定.这里举TI的CC2000下的C语言作为例子,如下:(1)汇编语言程序中所用的符号命名,要等同于C语言调用时用的符号前面加一个下划线.例如汇编中定义的变量地址标号叫_vv,那...
旬邑县19599826078: 汇编语言编程的规则是什么呢 - ?
夕奚康丽: 没什么规则,主要是记得运用模块化编程思想,把整个程序划分成实现各个子功能的小模块,这样在出现错误时容易校验.还要记得数据的存储,汇编语言的数据存储更新是最近的数据覆盖上次的数据,所以要注意,如果很多数据在后面的程序接着用的话要注意把数据存储到一些不会被覆盖的数据存储单元,另外存储单元的特殊功能是不一样的,要注意使用.
旬邑县19599826078: 汇编语言的标号和变量有什么区别? - ?
夕奚康丽: 汇编语言中,变量和标号都是用户定义的符号地址, 标号有两个属性,段基地址、偏移地址 变量有三个属性,段基地址、偏移地址和数据类型一般来说,标号只在代码段中被定义,而变量则可以被定义在数据段和代码段中!计算机汇编语言...
旬邑县19599826078: 数据表示和类型(汇编语言) - ?
夕奚康丽: 0A12FH,若不加0就是A12FH,若是有程序员大意定义了一个标识符A12FH(这并不违反标识符定义规则,所以是合法的),这时候编译系统就会不清楚到底是将A12FH作为标识符处理,还是作为数字A12FH处理,这就会导致出错,即使加了H也不容易区分啊,因为H也是字符...ANSI C规定标识符必须是有字母或下划线开头,随后跟字母,数字或下划线任意组合而成的字符序列,这也是为了区分标志符和数字
旬邑县19599826078: 汇编语言、机器语言 C语言 - ?
夕奚康丽: 汇编语言:汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址.在不同的设备中,汇编语言对应...
旬邑县19599826078: 微型计算机能直接识别并执行的计算机语言是什么语言?? - ?
夕奚康丽: 汇编语言.汇编语言是汇编指令集、伪指令集和使用它们规则的统称,使用具有一定含义的符号为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令. 汇编语言是一门重要的程序设计语言.下面列举了至少4本名叫《汇编语言》的图书和教材,并简要介绍了高校计算机相关专业在开设“汇编语言”课程方面的一些情况.
旬邑县19599826078: 什么是编译器,什么是语言? - ?
夕奚康丽: 编译器:翻译工具,把高级语言源程序翻译为汇编语言源程序,再把汇编源序翻译成目标代码供连接程序使用. 语言:一个规则.例如:C语言,它规定程序入口为main(),和其它规定.并把这些 <规定的集合> 命名为C语言. TC:一个开发工具,它包括文本编辑器,编译器,连接程序,调试环境等等.TC中的编译器是TCC.EXE文件. 关于汇编: 汇编语言是一个规则, 汇编程序是一个翻译工具 汇编源程序是一个 符合(汇编语言)规则的程序代码 汇编是一个过程,这个过程是汇编程序 把汇编源程序 翻译 为目标代码的过程 对于高级语言:翻译的过程叫做编译,翻译工具叫做编译程序或编译器.