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

2025-11-17

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

5.8 编写程序,从键盘输入一个N位二进制数,统计1出现的次数。 code segment

assume cs:code

start: mov cx,9 ;N<10 mov dl,30H next: mov ah,1 int 21h cmp al,13 jz write cmp al,30h jb exit cmp al,31h ja exit sub al,30h add dl,al dec cx jnz next write:

push dx mov dl,10 mov ah,2 int 21h pop dx mov ah,2 int 21h exit: mov ah,4ch int 21h code ends

end start

5.9 编写程序,从键盘输入一个字符串到BUFF,并按相反顺序显示输出。 datasg segment

mess1 db 13,10, 'input string:$' mess2 db 13,10,'$' st1 label byte max1 db 6 act1 db ?

stok1 db 6 dup(?)

datasg ends

codesg segment

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

mov ax,datasg mov ds,ax lea dx,mess1 mov ah,09

int 21h lea dx,st1 mov ah,0ah

int 21h lea dx,mess2 mov ah,09

int 21h mov cl,act1 mov ch,0

mov bx, offset stok1 add bx, cx next: dec bx

mov dl, [bx] mov ah,2 int 21h loop next ret main endp codesg ends

end main

5.10 编写程序,从键盘输入一个八位的二进制数,显示其十六进制数。 code segment

assume cs:code start:

mov cx,8 mov bl,0 next: mov ah,1 int 21h cmp al,30h jb exit cmp al,31h ja exit sub al,30h shl bl,1 add bl,al loop next mov cl,4 mov di,2 out1: rol bl,cl mov dl,bl and dl,0fh add dl,30h cmp dl,39h jle dig add dl,7 dig: mov ah,2 int 21h dec di cmp di,0 jnz out1 exit: mov ah,4ch int 21h code ends end start

5.11 编写程序,从键盘输入某个字符的ASCII码(作为起点)和个数N,显示输出这N个ASCII码和字符。

5.12 字数组ARRAY为有符号数,第一个单元为元素个数N,后面为N个元素,编写程序,求数组元素中的最大值,并把它放入MAX单元。 data segment

array dw 5,9,4,5,15,3 max dw ? data ends code segment

assume cs:code,ds:data start:

mov ax, data

mov ds, ax mov cx, array lea bx, array+1 mov ax, [bx] mov max, ax k1: mov ax, [bx] cmp ax, max jl next mov max,ax next: add bx,2 loop k1 mov ah,4ch int 21h code ends end start

5.13 字数组ARRAY,第一个单元为元素个数N,后面为N个元素,编写程序,把零元素从数组中清除,移动元素位置并修改第一个单元(元素个数)。 ;delete the 0 from array data segment

array dw 6,3,4,0,15,0,7

loca dw 999 ;此单元地址为结束标记 data ends code segment

assume cs:code,ds:data start:

mov ax, data mov ds, ax mov cx, array lea bx, array+1 next: cmp word ptr[bx],0 jz move add bx,2 dec cx cmp cx,0 jnz next jmp exit move: dec array mov di,bx mnext:

cmp di,offset loca ja next

mov ax, [di+2] mov [di],ax add di,2

cmp di,offset loca jnb next jmp mnext exit: mov ah,4ch int 21h code ends end start

5.14 下表为奥运会获金牌前十名国家的成绩统计表,请编写程序,统计并填写表中的合计栏数据。

; 先逐行求小计,再按列求合计。 data segment

array db 1,0,1,? ;设简单数据 db 1,1,0,? db 1,1,0,? db 1,1,1,? db 1,1,1,? db 1,1,1,? db 1,1,1,? db 1,1,1,? db 1,1,1,? db 1,1,1,? org 30h

sumvd db ?,?,?,? ;存放按列求的合计数 org 40h

loca dw ? ;存放array的第一行地址 data ends code segment


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

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

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

下载本文档需要支付 7

支付方式:

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

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