1、在屏幕上输出:
*********
*******
*****
***
*
解:code segment
assume cs:code
start: mov bx,9
rotate: mov dl,'*'
mov cx,bx
print: mov ah,02h
int 21h
loop print
mov dl,0ah
mov ah,02h
int 21h
mov dl,0ch
mov ah,02h
int 21h
sub bx,2
jns rotate
mov ah,4ch
int 21h
code ends
end start
2、从键盘上接收一个字符,如果为小写字母则显示其对应的大写字母。
解:code segment
assume cs:code
start: mov ah,01h
int 21h
cmp al,'a'
jl exit
cmp al,'z'
jg exit
mov dl,al
sub dl,20h
mov 21h
exit: mov ah,4ch
int 21h
code ends
end start
(题1的)思路:令cx=9,dl='*',循环输出loop dl并且令cx自减2;使用换行语句;直到cx小于0,退出。此处注意dl的值是否改变,以免输出的不是’*’。
3、键盘接收一个小写字母,然后出它的前导字母和后续字母,按顺序显示这三个字符。
解: code segment
assume cs:code
start: mov ah,01h
int 21h
mov dl,al
dec dl
cmp al,'a'
jne print1
mov dl,'z'
print1: mov ah,02h
int 21h
mov dl,al
mov ah,02h
int 21h
mov dl,al
inc dl
cmp al,'z'
jne print2
mov dl,'a'
print2: mov ah,02h
int 21h
mov ah,4ch
int 21h
code ends
end start
4、求z=[(w-x)*10+5]/(x+y),其中x,y,w为字节型的带符号数,数值分别为38H,28H,48H.
解:data segment
x db 38h
y db 28h
w db 48h
z db ?
data ends
code segment
assume cs:code,da:data
start: mov ax,data
mov ds,ax
mov al,w
sub al,x
mov bl,10
imul bl
add bl,y
idiv bl
mov z,al
mov z+1,ah
mov ah,4ch
int 21h
code ends
end start
5、首地址BUF的内存单元存放的10个字节数,统计其中单元内容为0的单元个数,并将结果显示出来。
解:data segment
BUF db 1,2,0,4,5,7,0,0,5,6,8
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov cx,10
mov dl,0
lea bx,BUF
rotate: cmp [bx],0
jne next
inc dl
next: inc bx
loop rotate
add dl,30H
mov ah,02H
int 21H
mov ah,4ch
int 21h
code ends
end start
6、统计一个有10个人的班级中男女生的人数,男生人数放到变量x,女生人数放到变量y中。
解:data segment
stu db '0','1','0','0','1','1','1','0','1','0'
x db ?
y db ?
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov cx,10
lea bx,stu
mov dh,0
mov dl,0
next: cmp [bx],'0'
ine rotate
inc dl
jmp exit
rotate: int dh
exit: inc bx
loop next
mov x,dh
mvo y,dl
mov ah,4ch
int 21h
code ends
end start
7、设首地址为BUF的存储单元,存放10个字数据,求出它们的和,并将结果存入变量sum中。
解: data segment
buf dw 10 dup(2)
sum dw ?
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov cx,10
mov ax,0
lea bx,buf
rotate: add ax,[bx]
add bx,2
loop rotate
mov sum,ax
mov ah,4ch
int 21h
code ends
end start
8、在BUF1中和BUF2两个数据区中各定义10个带符号字符数据,将它们的对应项的绝对值取和,并将结果存入以sum为首地址的数据区中。(如BUF1的第一项和BUF2的第一项的绝对值之和存入sum的地址中)
解:data segment
buf1 dw -56,24,13, 3,-10,51,6,44,-14,-21
buf1 dw 4,-5,24,-19,- 6,61,25,27,-42,-17
sum dw 10 dup(?)
data end
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov cx,10
mov bx,0
rotate: mov ax,buf1[bx]
cmp ax,0
jns next1
汇编语言如何编程 neg ax
next1: mov dx,buf2[bx]
cmp dx,0
jns next2
neg dx
next2: add ax,dx
mov sum[bx],ax
add bx,2
loop rotate
mov ah,4ch
int 21h
code ends
end start
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论