汇编语言编写用键盘输入十个数,统计这十个数中偶数的个数
追问:用键盘输入 采用int 16h 怎么做啊
追问:用键盘输入 采用int 16h 怎么做啊
答案:同学,我帮你完成了你的汇编程序,用键盘输入十个数,统计这十个数中偶数的个数,我附加的功能还可以输出这些偶数,你给我加点分嘛~~~~有问题可以hi我的哈~~~~~~~~~~~~~~
;**********************************************************
;-------------------------------
;宏定义
output MACRO string
mov ah,09h
lea dx,string
int 21h
ENDM
;-------------------------------
;宏定义
;********************************数据段
data segment
array db 0,0,0,0,0,0,0,0,0,0 ;数组开辟空间
array1 db 0,0,0,0,0,0,0,0,0,0
string1 db "Please input 10 numbers:$" ;字符串以$结束
string2 db "There is: $"
string3 db " even numbers!$" ;even numbers=偶数
crlf db 13,10,,13,10,"$" ;13回车,10换行
data ends
;**********************************
;**********************************代码段
code segment
assume ds:data,cs:code, ;段对应关系的说明
main proc far ;far子程序调用时的参数
start:
push ds
sub ax,ax ;清零
push ax ;压栈
mov ax,data ;将数据传送如数据段
mov ds,ax
;---------------------------------------
;主程序开始
;---------------------------------------------------------
;显示字符处string1的内容换行
output string1
output crlf
;-----------------------------------------------------------
;键盘输入数字
mov bx,offset array ;设定基址
mov si,0 ;循环计数设定
input:
mov ah,02h
mov dl,20h ;每隔数据间加上一个空格
int 21h
mov ah,01h
int 21h
cmp al,20h ;20h=32d,ASCII中的空格键
je input ;可以采用空格隔开
mov [bx+si],al ;将累加器中的数据传送到数组中保存起来
inc si ;计数器加1
cmp si,9
jle input ;小于等于8则继续输入(共9个数)
;-------------------------------------------------
;计算偶数个数
mov di,00h
mov si,00h
again1:
mov bx,offset array
mov al,[bx+si]
cbw
mov cl,02h
div cl
cmp ah,00h ;余数在ah若为偶数余数为0
jne again2
mov al,[bx+si]
mov bx,offset array1 ;设定基址
mov [bx+di],al
inc di ;计数加1
inc si
cmp si,09h
jg next1
jmp again1
again2:
inc si
cmp si,09h
jg next1
jmp again1
;----------------------------------------------------------------
;显示"The even numbers is: $"的内容换行
next1:
output crlf
output string2
mov ax,di
add al,30h
mov dl,al
mov ah,02h
int 21h
output string3
output crlf
mov bx,offset array1 ;设定基址
mov si,00h
again3:
mov al,[bx+si]
mov dl,al
mov ah,02h
int 21h
mov dl,20h
mov ah,02h
int 21h
inc si
cmp si,di
jne again3
ret ;返回(return)
main endp ;主函数结束
;********************************************
code ends ;代码段定义结束
end start ;这个程序段全部结束,
上一个:汇编语言中,mov的字节数为多少,比如JNZ的字节数为75,那么MOV的字节数为多少呢!
下一个:用汇编语言怎么对几个储存在连续地址中的八位数求平均