汇编习题参考答案(3)

2019-08-03 10:40

l1: cmp al, cl

jle l2

( xchg al,cl ) l2: ret

5.2 数据段如下:

data segment

da1 db 1,2,‘abcd’ count = $-da1

da2 db 9 dup(?)

data ends

补充括号处的指令,使得程序把DA1数据区数据移到DA2数据区。 mov ax,data

mov ds, ax

mov es,( AX ) mov cx,( COUNT )

mov si, ( OFFSET DA1 ) ( MOV DI, OFFSET DA2 ) ( REP MOVSB )

5.3 以下程序对无符号数组ARRAY的6个元素从小到大排序,补充括号处的指令。

data segment

array dw 4,3,12,56,5,8 data ends code segment

assume cs:code,ds:data start: ( mov ax,data ) ( mov ds, data ) mov cx, 5 l1: mov di, cx mov bx, 0 l2: mov ax, array[bx] cmp ax, array[bx+2]

( jl l3 )

xchg ax, array[bx+2] mov array[bx], ax

l3: add bx, 2

( loop l2 ) mov cx, di loop l1

mov ah, 4ch int 21h

code segment

end start

11

5.4 编写程序,实现从键盘输入的小写字母用大写字母显示出来。对输入须合法性检查。

code segment

assume cs:code start: push ds sub ax,ax push ax mov ah,1 int 21h cmp al,61h jb exit cmp al,7ah ja exit

sub al,20h mov dl,al mov ah,2 int 21h

exit:ret code ends

end start

5.5 编写程序,比较两个字符串是否相同,如果相同,则显示两个字符串,如果

不同,则显示发现不同的字符位置。 datasg segment

mess1 db 13,10, 'input string1:$' mess2 db 13,10, 'input string2:$' mess3 db 13,10, 'match!$' 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(?) datasg ends

codesg segment

assume cs:codesg, ds:datasg,es:datasg main proc far

12

push ds sub ax,ax push ax

mov ax,datasg 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 lea si,stok1 lea di,stok2 inc cl

repe cmpsb cmp cl,0 jz match nomatch: lea dx,mess4 jmp exit match: lea dx,mess3

exit:

mov ah,09 int 21h

sub di,offset stok2 mov dx,di and dx,0fh add dl,30h mov ah,2 int 21h

13

ret main endp codesg ends

end main

5.6 编写程序,从键盘输入一个个位数N,响铃N次(响铃ASCII码为07H)。 code segment

assume cs:code start: push ds sub ax,ax push ax mov ah,1 int 21h cmp al,31h jb exit cmp al,39h ja exit

sub al,30h mov cl,al mov ch,0 k: mov ah,2

mov dl,7 int 21h loop k

exit:ret code ends

end start

5.7 编写程序,从键盘输入一个字符串到BUFF,再输入一个字符到AL,在字

符串BUFF中查找是否存在该字符,如果找到,显示发现的字符位置。 ;search datasg segment para'data' mess1 db 13,10, 'input string:$' mess2 db 13,10, 'input a char:$' mess3 db 13,10, 'found at $' mess4 db 13,10, 'no found !$'

st1 label byte max1 db 6 act1 db ?

stok1 db 6 dup(?)

datasg ends

14

codesg segment para'code'

assume cs:codesg, ds:datasg,es:datasg main proc far push ds sub ax,ax push ax

mov ax,datasg 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?

mov ah,1

int 21h ;ans2 lea di,stok1 repne scasb jz match nomatch:

lea dx,mess4 jmp exit

match: lea dx,mess3

exit:

mov ah,09 int 21h sub di,offset stok1 mov dx,di and dx,0fh add dl,30h mov ah,2 int 21h

ret main endp codesg ends

end main

15


汇编习题参考答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:三年级关于面积应用题100道

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: