汇编语言(四)分支结构程序设计

1、从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。若输入为小写字母,显示“You Input a Lowercase Letter!”;若输入为大写字母,显示“YouInput a Uppercase Letter!”;若输入为数字,显示“You Input a Digit!”;若输入为其它字符,显示“You Input Other Letter!”。git

data segment
     infor1 db 0ah,0dh,"Please Press Any Key to input a letter:$"
     infor2 db 0ah,0dh,"You Input a Lowercase Letter!$"
     infor3 db 0ah,0dh,"You Input a Uppercase Letter!$"
     infor4 db 0ah,0dh,"You Input a Digit!$"
     infor5 db 0ah,0dh,"You Input a Other Letter!$"
data ends
code segment
     assume cs:code,ds:data
start:
       mov ax,data
       mov ds,ax
       mov dx,offset infor1
       mov ah,09h
       int 21h
       mov ah,01h
       int 21h
       cmp al,'0'
       jb other
       cmp al,'9'
       jbe digit
       cmp al,'A'
       jb other
       cmp al,'Z'
       jbe upper
       cmp al,'a'
       jb other
       cmp al,'z'
       jbe lower
       jmp pend

lower: mov dx,offset infor2
       mov ah,09h
       int 21h
       jmp pend
upper: mov dx,offset infor3
       mov ah,09h
       int 21h
       jmp pend
digit: mov dx,offset infor4
       mov ah,09h
       int 21h
       jmp pend
other: mov dx,offset infor5
       mov ah,09h
       int 21h
       jmp pend

pend:  mov ah,4ch
       int 21h

code ends
     end start

2、键盘接收三位数字,输出年龄提示信息并判断年龄段输出字符串提示信息。(0~39: young   40~69: middle-age   70~199: long life   200+: Are You Kidding me?)  当输入‘esc’时程序退出。oop

data segment
     infor1 db 0ah,0dh,"Please Input Your Age(<1000[example:065])and Press 'Esc' to exit!:$"
     infor2 db 0ah,0dh,"Your age is:$"
     infor3 db 0ah,0dh,"You are young!$"
     infor4 db 0ah,0dh,"You are middle-age!$"
     infor5 db 0ah,0dh,"You are an old man!$"
     infor6 db 0ah,0dh,"Are you kidding me? Do you know PengZu?$"
     infor7 db 0ah,0dh,"Congratulations,You are a long life!$"
     age db 0,0,0
data ends
code segment
     assume cs:code,ds:data

start:
        mov ax,data
        mov ds,ax   
		
input:		
	mov dx,offset infor1
        mov ah,09h
        int 21h

	mov bx,offset age

	mov ah,01h
        int 21h
	mov [bx],al
	
	cmp al,27
	jz exit

	mov bx,offset age
	mov cx,2
	mov di,0
save:	
	inc di
	mov ah,01h
        int 21h
	mov [bx+di],al

	loop save
		 
	mov dx,offset infor2
        mov ah,09h
        int 21h

	mov bx,offset age
	mov cx,3
	mov di,0
read:	mov al,[bx+di]
	inc di
	mov dl,al
	mov ah,02h
	int 21h
	loop read
	
	cmp [bx],byte ptr 31h
        jz cong 
	cmp [bx],byte ptr 32h
	jae jonk	
	cmp [bx+1],byte ptr 34h
	jb young  
	cmp [bx+1],byte ptr 37h
	jb mid
	cmp [bx+1],byte ptr 37h
	jae old
  
        jmp input

young:  
	mov dx,offset infor3
        mov ah,09h
        int 21h
        jmp input
mid:   
	mov dx,offset infor4
        mov ah,09h
        int 21h
        jmp input
old:   
	mov dx,offset infor5
        mov ah,09h
        int 21h
        jmp input
jonk:
	mov dx,offset infor6
        mov ah,09h
        int 21h
        jmp input
cong:
	mov dx,offset infor7
        mov ah,09h
        int 21h
        jmp input
exit: 
	mov ah,4ch
        int 21h

code ends
     end start

在Ubuntu下DOSBox运行结果显示:3d

 

3、在屏幕上显示信息“Are you really want to exit?”,而后从键盘输入一个字符,若输入“Y”或“y”,显示“Thank you for your using!”后程序结束;若输入“N”或“n”,显示“Let’s continue!”后程序结束;若输入其它字符,显示“You press an error key!”后程序结束code

 

data segment
     infor1 db 0ah,0dh,"Are you really want to exit?$"
     infor2 db 0ah,0dh,"Thank you for your using!$"
     infor3 db 0ah,0dh,"Let's continue!$"
     infor4 db 0ah,0dh,"You press an error key!$"
data ends

code segment
     assume cs:code,ds:data
start:
        mov ax,data
        mov ds,ax

        mov dx,offset infor1
        mov ah,09h
        int 21h
	
	mov ah,01h
        int 21h
	cmp al,'Y'
	jz exit
	cmp al,'y'
	jz exit
	cmp al,'N'
	jz continue
	cmp al,'n'
	jz continue
        mov dx,offset infor4
        mov ah,09h
        int 21h
        jmp pend
exit:  
	mov dx,offset infor2
        mov ah,09h
        int 21h
        jmp pend
continue:   
	mov dx,offset infor3
        mov ah,09h
        int 21h
        jmp pend
pend:   
	mov ah,4ch
        int 21h

code ends
     end start

4、blog

               在屏幕上显示以下信息:字符串

              1------------------------Pandainput

              2------------------------Catit

              3------------------------Rabbitio

              4------------------------Pigclass

              5------------------------EXIT

              (Please choose 1,2,3,4or 5)-----

若输入1,显示“I like panda”后程序结束;若输入2,显示“I like cat”后程序结束;若输入3,显示“I like rabbit”后程序结束;若输入4,显示“I don’t like pig”后程序结束;若输入5,程序直接结束;若输入其它字符,显示“You press an error key!”后程序结束

data segment
     infor1 db 0ah,0dh,"1--------------------Panada$"
     infor2 db 0ah,0dh,"2--------------------Cat$"
     infor3 db 0ah,0dh,"3--------------------Rabbit$"
     infor4 db 0ah,0dh,"4--------------------Pig$"
     infor5 db 0ah,0dh,"5--------------------EXIT$"
     infor6 db 0ah,0dh,"(Please choose 1,2,3,4or5)---$"
     infor7 db 0ah,0dh,"I like Panada                $"
     infor8 db 0ah,0dh,"I like Cat                   $"
     infor9 db 0ah,0dh,"I like Rabbit                $"
     infor10 db 0ah,0dh,"I don't like Pig            $"
     infor11 db 0ah,0dh,"You press an error key!     $"
data ends

code segment
     assume cs:code,ds:data
start:
        mov ax,data
        mov ds,ax

	mov dx,offset infor1
        mov ah,09h
        int 21h
	mov dx,offset infor2
        mov ah,09h
        int 21h
	mov dx,offset infor3
        mov ah,09h
        int 21h
	mov dx,offset infor4
        mov ah,09h
        int 21h
	mov dx,offset infor5
        mov ah,09h
        int 21h
	mov dx,offset infor6
        mov ah,09h
        int 21h

	mov ah,1
	int 21h
	cmp al,'1'
	jz panada
	cmp al,'2'
	jz cat
	cmp al,'3'
	jz ribbit
	cmp al,'4'
	jz pig
	cmp al,'5'
	jmp pend


panada:  
	mov dx,offset infor7
        mov ah,09h
        int 21h
        jmp pend
cat:   
	mov dx,offset infor8
        mov ah,09h
        int 21h
        jmp pend
ribbit:  
	mov dx,offset infor9
        mov ah,09h
        int 21h
        jmp pend
pig:   
	mov dx,offset infor10
        mov ah,09h
        int 21h
        jmp pend
error:  
	mov dx,offset infor11
        mov ah,09h
        int 21h
        jmp pend


pend:	mov ah,4ch
        int 21h

code ends
     end start