汇编作业

原创 2006年06月24日 15:38:00

题目:

从键盘输入一个长度为n的字符串(0<n<32),要求:

   1 在进行输入和输出之前必须先显示相应的提示信息;提示信息必须独占一行;输入必须用回车符结束;

   2 将字符中的大写字母转化为小写字母并将转化后的字符串在屏幕上显示;

   3 统计字符串中的非数字字符(‘0'——‘9'以外的字符)个数,以十进制输出;

   4 输出字符串中包含的小写英文字符里面ASCII值最小的一个;

代码:

   

data segment

 inpinfo db 'please input:',10,13,'$'

 str db 512 dup(?)

 BTL db 10,13,'after convert big to small they are:',10,13,'$'

 numinfo db 10,13,'the number not num is :',10,13,'$'

 wordinfo db 10,13,'the smallest word is :',10,13,'$'

 worderror db 10,13,'no small word exist!',10,13,'$'

 count db 0

 little dw 122  ;'z'+1

data ends

assume cs:code,ds:data

code segment

start:

   mov ax,data

   mov ds,ax

 

   mov si,0

   ;******input

   MOV DX,OFFSET INPINFO

   MOV AH,09H

   INT 21H

 

INPUT_T1:

   mov ah,01h

   int 21h  

   mov str[si],al

   inc si

   cmp al,13

   je FIND

   jne INPUT_T1

   ;*****找出其中ASII码最小的一个字符

FIND:

   DEC SI

   MOV BX,SI

   mov si,0

   mov dh,123

find_0:  

    mov cl,str[si]

    cmp cl,'a'

    jb  find_1

    cmp cl,'z'

    ja  find_1

    cmp cl,dh

    jb give

    inc si

    cmp si,bx

    je print_it

    jne find_0

give:

    mov dh,cl

    inc si

    cmp si,bx

    je print_it

    jne find_0       

find_1:

    inc si

    cmp si,bx

    je print_it

    jne find_0  

print_it:

    cmp dh,123

    je fail

    push dx

    lea dx,wordinfo

    mov ah,09h

    int 21h

    pop dx

    mov dl,dh

    mov ah,02h

    int 21h

    jmp CONVERT  

fail:

    lea dx,worderror

    mov ah,09h

    int 21h

    jmp CONVERT

; *******FIND OK 

;*******将其中的大写转小写

CONVERT:

   mov si,0

   mov ah,09

   lea DX,BTL

   INT 21H

CONVT_1:

   mov dl,str[si]

   CMP DL,'A'

   JB  CONVT_2

   CMP DL,'Z'

   JA  CONVT_2

   ADD DL,20H

   MOV STR[SI],DL

   inc si

   cmp si,bx

   jne CONVT_1

   je OUTPUT

CONVT_2:

   INC SI

   cmp si,bx

   jne CONVT_1

   je OUTPUT

OUTPUT:

   MOV SI,0

OUT_1:

   MOV DL,STR[SI]

   MOV AH,02H

   INT 21H

   INC SI

   CMP BX,SI

   JNE OUT_1

   JE count_no

;**********大写转小写完成

;**********计算非数字的个数

count_no:

   MOV CL,0

   mov si,0

COUNT_0:

   mov al,str[si]

   cmp al,'0'

   jb  count_1

   cmp al,'9'

   ja  count_1

   inc si

   cmp si,bx

   jne COUNT_0

   je output_num

count_1:

   ADD COUNT,1

   inc si

   cmp si,bx

   jne count_0

   je output_num

output_num:

   lea dx,numinfo

   mov ah,09h

   int 21h

   MOV AX,0

   mov AL,count

   MOV CL,10

   DIV CL

   PUSH AX

   MOV DL,AL

   mov ah,02h

   or dl,30h

   int 21h

   POP AX

   MOV DL,AH

   OR DL,30H

   MOV AH,02H

   INT 21H

   jmp EXIT00

   ;**************统计OVER

 

exit00:

   mov ax,4c00h

   int 21h

 code ends

end start

  

  

 

     

  

  

 

 

  

看8086汇编 书上的一个小作业 键盘中断例程编写

;任务:在屏幕中间依次显示‘a'~’z' 并可以让人看清。在显示的过程中 按下Esc后,改变显示的颜色 assume cs:code ;栈 stack segment db 128 dup (0...

汇编:输入姓名和成绩排序(别人的作业,自己随便写写的,没用传统的排序算法)

;我这是计算成绩从高到低的排序,因为我假设的情况是一个人一个成绩, ;所以如果你要的是一个人几个成绩进行排序; ;你就修改我下面的数据结构,再按照我自己编写的算法进行循环就行了 ;很简单的,嫌麻烦...

汇编(输入成绩20个,进行分类,别人的作业,我帮着做的)

s5为60分以下,s6为60-69,依这个类推 assume cs:code,ds:data,ss:stack data segment inform db 0dh,0a...

这是我的汇编作业

要求: 完成下列操作,用WORD文档记录结果并上交 (操作结果的记录可使用截屏: ALT+PRINT SCREEN)   重要说明: 1.指令中各种内存地址的写法为: 地址>写法: 段地址...

FZU汇编作业 实验(五)

1、上机题目:将从键盘输入的N个无符号数保存到数组DAT ,找出N个无符号数中的偶数存放到数组P,统计并在终端上显示数组P的数据个数no。              DAT  DW   X1,……,X...

汇编作业

蜂鸣器汇编: .global _start_start:LDR R0,=0XE02000A0LDR R1,[R0]BIC R1,R1,#(0XF)ORR R1,R1,#(0X1)STR R1,[R0]...
  • Mce_19
  • Mce_19
  • 2016年11月23日 20:55
  • 168

汇编_8086作业

D:/www_local/asm/test/test10.asmassume cs:codesg,ds:datasg datasg segment db 'welcome to masm!',0 ;...

反汇编小作业

0x00 问题描述给定一个 bin 文件,生成对应的 asm 文件。 这里我们只写了 MOV 指令的反汇编代码,具体过程如下:0x01 生成 bin 文件输入来自 bin 文件,这里为了方便,我们用...

汇编作业 宏指令运用实验

  • 2011年11月08日 13:54
  • 472KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汇编作业
举报原因:
原因补充:

(最多只允许输入30个字)