1、编写子程序output,将AX中的数以无符号十进制形式输出显示。(如果有入口参数或出口参数,请给出相应注释进行说明。)
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
mov ax,153;入口参数
call output
MOV AH,4CH
INT 21H
output proc
push bx
push cx
push dx
mov ch,0
mov cl,10
div cl
cmp al,0
ja L11
je L22
L11:
push ax
add ch,1
mov ah,0
div cl
cmp al,0
ja L11
je L22
L22:
mov dl,ah
add dl,48
mov ah,2
int 21h
cmp ch,0
ja L33
je L44
L33:
pop ax
sub ch,1
jmp L22
L44:
pop bx
pop cx
pop dx
ret
output endp
CODES ENDS
END START
2、编写子程序input,从键盘输入数字字符(例如‘1’‘2’‘6’‘a’),在程序中得到对应的数值(126)。(如果有入口参数或出口参数,请给出相应注释进行说明。)
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
call input
MOV AH,4CH
INT 21H
input proc
push ax
push cx
push dx
mov bx,0
mov dh,10
jmp L0
L0:
mov ah,1
int 21h
sub al,48
cmp al,0
jb L8
je L2
L2:
cmp al,9
ja L8
jb L3
L3:
mov cl,al
mov ch,0
mov ax,bx
mul dh
add cx,ax
mov bx,cx
jmp L0
L8:
pop ax
pop cx
pop dx
ret
input endp
CODES ENDS
END START
DATAS SEGMENT
a0 byte 5
a1 byte 12,125,6,234,123
a2 word 18
a3 word 12,5,6,567,123
a4 word 5 dup (?)
a5 byte 'Please input 5 data:!'
a6 byte '5 data before sort is:!'
a7 byte '5 data after sort is:!'
a8 byte 13,10,'!'
DATAS ENDS
根据以上数据定义,完成下列题目:
3、利用1题中的子程序,将a2中的数据输出显示。
mov si,offset a2
mov al,[si]
mov ah,0
call output
MOV AH,4CH
INT 21H
4、 利用1题中的子程序,将a3中的5个数据输出显示。
mov si,offset a1
mov bh,0
again:
cmp bh,5
je over
mov al,[si]
mov ah,0
call output
add si,1
add bh,1
jmp again
over:
MOV AH,4CH
INT 21H
5、利用2题中的子程序,输入5个数据,存放到a4变量中。
mov si,offset a4
mov di,0
again:
cmp di,5
je over
call input
mov [si],bl
add si,1
add di,1
jmp again
over:
MOV AH,4CH
INT 21H
6、编写子程序dispstr,将以叹号结尾的字符串输出显示。(如果有入口参数或出口参数,请给出相应注释进行说明。)
mov si,offset a5
call dispstr
over:
MOV AH,4CH
INT 21H
dispstr proc
dagain:
mov dl,[si]
cmp dl,'!'
je dover
mov ah,2
int 21h
add si,1
jmp dagain
dover:
ret
dispstr endp
7、利用6题中的子程序,在主程序中将a5-a7中的字符串输出显示。
mov si,offset a5
call dispstr
call enter1
mov si,offset a6
call dispstr
call enter1
mov si,offset a7
call dispstr
over:
MOV AH,4CH
INT 21H
enter1 proc
mov dl,13
int 21h
mov dl,10
int 21h
ret
enter1 endp