汇编 部分习题参考答案(3)

2025-11-17

习题5

5.1 下列程序是在3个数中找出最小的数并放入AL,在括号中填入指令使其完整。

mov al,x mov bl,y

mov cl,z

cmp al,bl

( jl l1 )

xchg al,bl 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

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 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

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

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


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

下一篇:高处作业安全管理规定(第一稿)

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

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