1、 允许用户从键盘输入016个0或1,判断输如以回车(20h)为输入结束,对每一个输入判断为1,还是为0,如果为1,设置cf=1然后带进位左移bx,如果为0,设置cf=0,也是带进位左移bx,bx开始时为0,如果输入10101的话,经过5次移位,bx=10101b了,输入完了后将bx按十六进制方式输出。4、实验代码: CODES SEGMENTASSUME CS:CODESSTART:mov bx,0loop1:clc ;此指令清除cf标志位cf=0 mov ah,1hint 21hcmp al,0dh ;比较是不是回车键je print ;如果是表示输入完毕cmp al,0 jz rotate
2、stc ;此指令设置cf为1rotate:rcl bx,1 ;注意这里是带进位左移,程序的思想所在jmp loop1print:mov dl,0dh ;接下来的六行指令打印回车和换行,避免输出的覆盖原来的输入mov ah,2hmov dl,0ahmov cl,4 ;将bx的二进制数按十六进制显示出来mov ch,4loop2:rol bx,clmov dl,bland dl,0fhadd dl,30hcmp dl,3ahjb loop3add dl,7hloop3:dec chjnz loop2 exit:MOV AH,4CHINT 21HCODES ENDSEND START5、实验结果:字
3、符串匹配曾惜计算机科学与技术110212月28日贺建飚1实验目的;2实验要求和题目;3实验原理;4实验代码;5实验结果;1)掌握串操作指令的使用方法。2)掌握串处理程序的设计方法。3)熟练使用各种程序结构。2、实验要求和题目编制两个字符串比较子程序根据提示信息,从键盘输入两个字符串,实现两个字符串的比较。如两个字符串中有一个字符相同,则显示“MATCH”,否则显示“NO MATCH”4、实验代码DATA SEGMENT MSG1 DB INPUT STRING 1:,0DH,0AH,$ MSG2 DB 0DH,0AH,INPUT STRING 2: MSG3 DB 0DH,0AH,NO MAT
4、CH MSG4 DB 0DH,0AH,MATCH STR1 DB 25,25 DUP(? STR2 DB 25,25 DUP(? DATA ENDS CODE SEGMENT CODE ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MSG1 ; 输入字符串1 MOV AH,09H INT 21H MOV DX,OFFSET STR1 MOV AH,0AH MOV DX,OFFSET MSG2 ; 输入字符串2 MOV DX,OFFSET STR2 MOV SI,OFFSET STR1+2 MOV CL,SI-
5、1 AGAIN1: MOV DI,OFFSET STR2+2 MOV DL,DI-1 MOV BX,00H AGAIN2: MOV AL,SI+BX CMP AL,DI JZ OUT1 JNZ OUT2 OUT1: INC BX INC DI DEC DL CMP DL,00H JZ MATCH JNZ AGAIN2 OUT2: INC SI DEC CL CMP CL,00H JZ NOMATCH JNZ AGAIN1 MATCH: MOV DX,OFFSET MSG4 ; 输出字符串MATCH JMP EXIT NOMATCH: MOV DX,OFFSET MSG3 ; 输出字符串NO M
6、ATCH EXIT: MOV AX,4C00H CODE ENDS END START5、实验结果输入字符串分类显示一、实验目的学习用汇编语言编写与设计分支循环程序。程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其他字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。三、实验原理 题目(老师给定或学生自定)分类统计字符个数COUNT_CHAR 设计的主要思路根据字符的ASCLL对字符进行区分,分为字母、数字和其他字符。 主要功能datasg segmentstring label bytemax db 80act db
7、 ?stokn db 80 dup(?digit db 0Letter db 0other db 0mess1 db Please input chars:,mess2 db 0dh,0ah,mess3 db digit:mess4 db letter:mess5 db other:mess6 db h n db 3datasg ends;codesg segment assume cs:codesg,ds:datasgCOUNT_CHAR proc far push ds sub ax,ax push ax mov ax,datasg mov ds,ax lea dx,mess1 ;输出字符
8、串 mov ah,09 int 21h lea dx,string mov ah,0ah ;换行 lea dx,mess2 mov ah,09h ; lea si,stokn sub ch,ch mov cl,actagain: ;判断ASCLL mov al,si cmp al,30h jl other1 cmp al,3ah jl digit1 cmp al,41h cmp al,5bh jl letter1 cmp al,61h cmp al,7bhother1:处理其他字符,计数加一 inc other inc si loop again jmp printdigit1:处理数字,计数
9、加一 inc digitletter1:处理字母,计数加一 inc letter mov ch,2 mov bl,digit lea dx,mess3转换16进制 mov cl,4 rol bl,cl mov al,bl and al,0fh add al,30h jl print1 add al,7hprint1: mov dl,al mov ah,2 dec ch jnz rotate lea dx,mess6 dec n cmp n,2 jz letter2 cmp n,1 jz other2 jmp exitletter2: lea dx,mess4 mov bl,letter jmp
10、 rotateother2: lea dx,mess5 mov bl,other ;结束退出 retCOUNT_CHAR endp codesg ends end COUNT_CHAR1、实验目的:2、实验要求运用DOS系统功能的1号功能输入并保存N值。计数器置零。然后用循环结构,每一次循环输出一个响铃命令,并让计数器自加1,直到计数器数值达到N,便完成了响铃N次的目标。 三、实验原理四、 实验代码:code SEGMENTcodestart:MOV AH,1INT 21hMOV AH,0MOV CX,AXbegain:MOV DL,7MOV AH,2LOOP begainMOV AH,4chcode ENDSEND (运行的铃声要怎么截图。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1