当前位置:首页 > 福州大学汇编语言课程作业1~5
LEA EDX,PROMPT3 CALL WRITESTRING MOV ESI,0 MOV CL,COUNT OUTPUT: MOV AL,DAT[ESI] CALL WRITEINT ; CALL CRLF INC ESI LOOP OUTPUT CALL CRLF PRINT ENDP
START: CALL SCANF CALL TRANS CALL ORDER CALL PRINT JMP START END START 4.1代码转换
内容:用子程序设计的方法,分别把BUF字单元中的四位十六进制数转换为ASCII码存入MAS开始的单元中,并在终端上显示MAS开始的4个字节单元。 BUF DW X MAS DB 4 DUP(?)
INCLUDE IRVINE32.INC
.DATA
BUF DW 16ABH MAS DB 4 DUP(?)
.CODE
MAIN PROC CALL Decbin EXIT
MAIN ENDP
Decbin PROC PUSH DX MOV ESI,0 MOV CH,4H
RETURN: MOV CL,4H
MOV DX,BUF ROL DX,CL MOV BUF,DX AND DL,0FH ;取DL低4位 CMP DL,0AH JB YES ADD DL,7 YES: ADD DL,30H ;该步将DL中的数转换为ASCII码 MOV MAS[ESI],DL MOV AL,MAS[ESI] MOVZX EAX,AL ;将MAS[ESI]原来DB类型拓展为32位 CALL WriteInt CALL crlf INC ESI DEC CH CMP CH,0 JNE RETURN POP DX RET
Decbin ENDP END MAIN 4.2键盘输入
内容:从键盘输入一串字母并保存在string开始的地址单元,要求将该字符串中的大写字母转化为小写字母后用子程序实现在终端上依次显示该串字母的 ASCII码。 string db n dup(?)
INCLUDE IRVINE32.INC
.DATA
STRING DB 50 DUP(?)
PROMPT1 BYTE \要输入的字符串含有几个字符:\PROMPT2 BYTE \请输入字符串:\
PROMPT3 BYTE \转换后所有小写字符的ASCIII码是:\COUNT DD 0
.CODE SCANF PROC ;字符串输入子程序 LEA EDX,PROMPT1 CALL WRITESTRING
CALL READINT ;已将字符个数传递给EAX MOV COUNT,EAX LEA EDX,PROMPT2 CALL WRITESTRING LEA EDX,STRING ;将EDX指向存储空间STRING MOV ECX,COUNT ;共输入EAX个字符 CALL READSTRING RET SCANF ENDP
EXCHANGE PROC ;大写转换小写子程序 XOR EAX,EAX MOV ESI,0 MOV ECX,COUNT
AGAIN: MOV AL,STRING[ESI] CMP AL,61H JNB NEXT XOR AL,20H ;大写转成小写 MOV STRING[ESI],AL ;将转换后的字母放入PROMPT NEXT: INC ESI LOOP AGAIN CALL CRLF RET
EXCHANGE ENDP
PRINT PROC ;依次显示字符子程序 LEA EDX,PROMPT3 CALL WRITESTRING CALL CRLF XOR EAX,EAX MOV ESI,0 MOV ECX,COUNT
AGAIN1:MOV AL,STRING[ESI] MOVZX EAX,AL ;STRING是DB型,不能直接传递给32位的EAX,故要经过AL->EAX的拓展 CALL WRITEINT CALL CRLF INC ESI
LOOP AGAIN1 RET
PRINT ENDP
START: CALL SCANF CALL EXCHANGE CALL PRINT EXIT END START
5.1将从键盘输入的N个无符号数保存到数组DAT ,找出N个无符号数中的偶数存放到数组P,统计并在终端上显示数组P的数据个数no。 DAT DW X1,……,XN P DW n dup (?) no DW ?
要求:1、求偶数数组P的功能用子程序实现 2、画主程序及子程序流程图 3、熟练掌握综合程序设计方法
INCLUDE IRVINE32.INC .DATA
DAT DW 50 DUP(?) P DW 50 DUP(?) NO DW 0 COUNT DD ?
PROMPT1 BYTE \将输入几个无符号数?:\PROMPT2 BYTE \请输入无符号数:\PROMPT3 BYTE \偶数的个数为:\.CODE
;----------------------------- SCANF PROC LEA EDX,PROMPT1 CALL WRITESTRING CALL READINT MOV COUNT,EAX MOV ECX,COUNT MOV ESI,0 LEA EDX,PROMPT2 CALL WRITESTRING INPUT: CALL READINT MOV DAT[ESI],AX ADD ESI,2 LOOP INPUT RET
共分享92篇相关文档