汇编语言作业1

1.在键盘上输入一个字符,判断是否为数字字符,是的话输出'Y',不是输出‘N'

STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    
    mov AH,1
    INT 21H
    MOV BL,AL
    
    CMP BL,'0'
    JAE L1
    JMP L3
    
   L1:CMP BL,'9'
      JBE L2
      JMP L3
   L2: MOV DL,'Y'
       MOV AH,2
       INT 21H
       JMP OVER
   L3:MOV DL,'N'
      MOV AH,2
      INT 21H
    
    OVER:
    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

2.计算前10个正整数的和 

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    
    MOV AL,0;循环次数
    MOV BL,0;累加结果
L1:
	ADD AL,1
	ADD BL,AL
	
    CMP AL,10;比较
    JB L1;如果小于10,执行L1,否则忽略
    MOV AL, BL
    MOV AH,0 
	MOV CL, 10
	DIV CL
	
	ADD AL, 48;商自动存到al
	MOV DL, AL;dl = al
	MOV BL, AH;将余数放到别的位置,下一条ah = 2
    MOV AH,2;输出
    INT 21H
    
    ADD BL,48;余数自动存到ah
    MOV DL,BL;dl = bl
    MOV AH,2;输出
    INT 21H
    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

3.无符号十进制形式输出ax中的数

DATAS SEGMENT
    ;此处输入数据段代码 
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码

    mov ax, 1234; 将 ax 赋值 123
    mov cl, 10; cl 是每次 除以 10
    mov ch, 0; 计算 除了多少次,也就是有几位
    
L0:	div cl; ax 除以 cl
	push ax; 此时的商存储在 al 中;余数存储在 ah 中,此时 ax = ah
	add ch, 1
	mov ah, 0
	cmp ax, 0;如果 ax 是 0,说明除干净了
	jne L0
	
again: cmp ch, 0; 此时 ch 的值就是位数,每次出栈,;然后 ch 减一即可 
	je over
	pop dx; 把栈顶元素存储到 dx 中
	mov dl, dh;然后将 dl 的值等于 dh
	add dl, 48
	mov ah, 2
	int 21h
	
	dec ch
	jmp again
over:

     
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

4,从键盘上输入10个字符,判断其中数字字符的个数 

DATAS SEGMENT
    ;此处输入数据段代码 
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码

   mov bl,0;记录输入的个数
   mov ch,0;数字的个数
wh:cmp bl,10
   ja over
   
   mov ah,1
   int 21h
   mov cl,al;输入放在cl中
   add bl,1
   cmp cl,'0'
   jae L1
   jmp wh
L1:cmp cl,'9'
   jbe L2
   jmp wh
   
L2:add ch,1
   jmp wh   
over:

   mov dl,13
   mov ah,2
   int 21h
   
   mov dl,10
   mov ah,2
   int 21h
   
   add ch,48
   mov dl,ch
   mov ah,2
   int 21h   
       
   MOV AH,4CH
   INT 21H
CODES ENDS
    END START

5.从键盘上输入若干个字符,如果是数字字符,对数值位相加,直到累加到结果大于20为止

DATAS SEGMENT
    ;此处输入数据段代码 
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码

   mov ch,0;数字和

wh:mov ah,1
   int 21h
   mov cl,al;输入放在cl中
   sub cl,48
   
   cmp cl,0
   jae L1
   jmp wh
L1:cmp cl,9
   jbe L2
   jmp wh
   
L2:add ch,cl
   cmp ch,20
   ja over
   jmp wh   
over:
       
   MOV AH,4CH
   INT 21H
CODES ENDS
    END START

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值