exit:ret code ends
end main
(2)code segment
assume cs:code main proc far push ds sub ax,ax push ax mov bx,1
mov ax,0
mov cx,99 a:add ax,bx inc bx cmp bx,101 jnz a exit:ret main endp code ends end main
6.6 打印下面图形。 * ** *** **** ***** ******
答:code segment
assume cs:code main proc far push ds sub ax,ax push ax mov ax,1 a:mov cx,ax b:mov ah,2
mov dl,’*’ int 21h loop b cmp ax,6 jz exit inc ax mov ah,2
mov dl,13 int 21h mov ah,2 mov dl,10 int 21h jmp a
exit:ret code ends
end main
6.7 求已知带符号数字节数组ARRAY的平均值,ARRAY的首字节单元为数组元素的个数。 答:
data segment
ARRAY db 5,01,12,23,45,F3 data ends
code segment
assume cs:code start:
mov ax,data
mov ds,ax mov ax,0 mov cl,array mov ch,0 mov bl,cl lea si,array+1
a:add al,array[si] inc si loop a div bl
exit:mov ah,4ch int 21h code ends
end start
6.8 编写程序,如果输入的是大写字母,则输出对应的小写字母;如果输入的是小写字母,则输出对应的大写字母;如果输入的是数字,原样输出;按回车结束。 答:code segment
assume cs:code start:
mov ah,1 int 21h cmp al,30h
jb exit cmp al,3Ah jb num cmp al,41h jb exit cmp al,5Bh jb large
cmp al,61h
jb exit cmp al,7ah ja exit
sub al,20h
jmp num large: add al,20h jmp num num: mov dl,al
mov ah,2 int 21h
exit:mov ah,4ch int 21h code ends
end start
6.9 编写程序,实现对无符号字数组ARRAY的6个元素从小到大排序。 答: data segment
array dw 6,5,9,4,5,15,3 ;首地址单元6为元素个数 data ends code segment
assume cs:code,ds:data start:
mov ax, data mov ds, ax mov di, array k1: mov cx, di mov bx,0
k2: mov ax, array[bx] cmp ax, array[bx+2] jl next
xchg ax,array[bx+2] mov array[bx],ax next: add bx,2 loop k2 dec di jnz k1
mov ah,4ch int 21h code ends
end start
6.10 数据段有两个等长的字数组,分别求出各自的元素之和,并存入元素后面的单元中,即横向相加。再求出两个数组的对应元素之和,并把和存入新数组SUM中,即纵向相加。 答:data segment
Array1 dw 3, 1,0,1,? Array2 dw 3,1,1,0,?
Array3 dw 3,3 dup (0) data ends code segment
assume cs:code,ds:data start:
mov ax, data mov ds, ax mov ax, 0
lea bx, array1+2 mov cx, array1 sumh1: add ax, [bx] add bx,2 loop sumh1 mov [bx],ax ;第二个数组累加
mov ax, 0
lea bx, array2+2 mov cx, array2 sumh2: add ax, [bx] add bx,2 loop sumh2 mov [bx],ax
lea bx,2
mov cx, array2
sum3: mov ax, array1[bx]
add ax, array2[bx]
mov array3[bx],ax
add bx,2
loop sum3 exit: mov ah,4ch int 21h code ends end start
;设简单数据,第一个为元素个数 array1,2的和 ;存放
6.11 编写程序,比较两个从键盘输入的字符串是否相同,如果相同,则显示 ‘YES’,如果不同,则显示发现不同的字符位置。 答:data segment
mess1 db 13,10, 'input string1:$' mess2 db 13,10, 'input string2:$' mess3 db 13,10, 'YES!$'
mess4 db 13,10, 'no match at $'
st1 label byte max1 db 6 act1 db ?
stok1 db 6 dup(?)
st2 label byte max2 db 6 act2 db ?
stok2 db 6 dup(?) data ends
code segment
assume cs:code, ds:data,es:data start: mov ax,data mov ds,ax mov es,ax lea dx,mess1 mov ah,09
int 21h ;qust1? lea dx,st1 mov ah,0ah
int 21h ;ans1 lea dx,mess2 mov ah,09
int 21h ;qust2? lea dx,st2 mov ah,0ah
int 21h ;ans2 mov cl,act1 mov dl,act2 cmp cl,dl jnz nomatch mov ch,0 lea si,stok1 lea di,stok2
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库汇编语言程序设计答案(6)在线全文阅读。
相关推荐: