第一题:
data segment
db 200 dup(?)
data ends
code segment
assume cs:code,ds:data
start proc far
push ds
mov ax,data
mov ds,ax
mov ax,1567h
mov dl,al
and dl,0fh
mov cl,4
shr ax,cl
mov cl,al
and cl,0fh
shr ax,1
shr ax,1
shr ax,1
shr ax,1
mov bl,al
and bl,0fh
shr al,1
shr al,1
shr al,1
shr al,1
and al,0fh
ret
start endp
code ends
end start
第二题:
1、data segment
eng db "sun sun sun sam ","$"
s db "SUN:$"
enter db 10d,13d,"$"
a db "$"
sum db 00h,00h,00h,00h,"H",10 dup(?), 10d,13d,"$"
c db 100 dup(0)
data ends
code segment
assume cs:code,ds:data
star:
start proc far
mov ax,data
mov ds,ax
mov ax,0000h
mov bx,0000h
mov cx,0000h
mov dx,0000h
mov si,0
mov bl,0
aa: mov cl,eng[si]
cmp cl,73h
je s1
cmp cl,75h
je uu
cmp cl,6eh
je nn
next:add si,1
cmp cl,24h
je bb
jmp aa
bb:lea dx,eng
mov ah,09h
int 21h
lea dx,enter
mov ah,09h
int 21h
lea dx,s
mov ah,09h
int 21h
mov dx,00h
;-------output----------
mov sum,bl
mov dx,0000h
mov al,sum
and ax,0000000011110000b
mov cl,4
shr ax,cl
mov cl,10d
div cl
cmp al,09d
jg ab
ba:add dl,ah
add dl,30h
mov ah,02h
int 21h
mov dx,0000
mov al,sum
and ax,0000000000001111b
cmp al,09h
jg ac
ca:add dl,al
add dl,30h
mov ah,02h
int 21h
lea dx,sum+4
mov ah,09
int 21h
;------end------------------
mov ah,4ch
int 21h
;----s--------
s1: mov ax,01h
jmp next
;-----u-------
uu: cmp ax,01h
je xx
mov ax,00h
jmp next
xx: mov ax,02h
jmp next
;------n------
nn: cmp ax,02h
je yy
mov ax,00h
jmp next
yy:inc bl
mov sum,bl
jmp next
ab: add dl,7h
jmp ba
ac: add dl,7h
jmp ca
start endp
code ends
end start
2、
data segment
a dw 15 dup(?)
b dw 20 dup(?)
c dw 15 dup(?)
data ends
code segment
assume cs:code,ds:data
main proc far
start: push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
begin:mov si,0
mov bx,0
mov cx,15
next1:push cx
mov di,0
mov cx,20
mov ax,a[si]
next2:cmp b[di],ax
jnz next3
mov c[bx],ax
add bx,2
next3:add di,2
loop next2
add si,2
pop cx
loop next1
ret
main endp
code ends
end start
1将AX寄存器中的16位数分成四组,每组四位,然后把这四组数分别放在AL、BL、CL、DL中:
代码:
mov bx,ax
and bx,000fh
mov dl,bl
mov bx,ax
and bx,00f0h
mov cl,4
shr bl,cl
mov cl,bl
mov bx,ax
push cl
mov cl,8
shr bx,cl
and 000fh
and ax,f000h
mov cl,bh
shr ax,cl
pop cl
2、已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数,试编写一个程序,将既在A数组中出现又在B数组中出现的整数存放于组数C中。
代码:
mov si,offset a
mov di,offset b
one:mov al,si
mov bl,di
cmp al,bl
jz two
inc di
jmp one
two:mov btye ptr c,al
inc si
mov di,offset b
cmp si,offset a+dh
jnz one
时间太少,写得不太优化,希望可以帮上你