1、 mov al,97H
mov bl, 8AH
add al,bl
执行上面三条指令后,al中的值是多少?CF、OF、SF、ZF分别是多少?请给出al和bl对应的8个二进制位加法式子。
122H 1 1 1 0
2、 把al中的数以二进制形式显示。(如果al=9,显示00001001。需要用到rol指令和and指令)
3、 查找a2变量中的最大元素,存放到ax中,调用输出子程序显示。
DATAS SEGMENT
a1 db 12,2,113,4,5
a2 word 12,2,113,4,5
srcstring db 'abcd'
a3 db 'testtesttest'
DATAS ENDS
EXTRAS SEGMENT
b1 db 1,2,3
deststring db lengthof srcstring dup (?)
b2 db 1,2,3,4,5
EXTRAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:EXTRAS
START:
MOV AX,DATAS
MOV DS,AX
mov si,offset a2
mov cl,5
call Find_largest_element
MOV AH,4CH
INT 21H
Find_largest_element proc
mov dl,[si];存最大值
F2:
mov dh,[si+2]
cmp dl,dh
jb F1
jnb F3
F3:
add si,2
sub cl,1
cmp cl,0
je Fover
jmp F2
F1:
mov dl,dh
add si,2
sub cl,1
cmp cl,0
je Fover
jmp F2
Fover:
mov al,dl
mov ah,0
call output
ret
Find_largest_element endp
output proc;开始第一个函数
push bx
push cx
push dx
mov ch,0
mov cl,10
div cl
cmp al,0
ja o1
je o2
o1:
push ax
add ch,1
mov ah,0
div cl
cmp al,0
ja o1
je o2
o2:
mov dl,ah
add dl,48
mov ah,2
int 21h
cmp ch,0
ja o3
je o4
o3:
pop ax
sub ch,1
jmp o2
o4:
pop bx
pop cx
pop dx
ret ;返回
output endp;结束
CODES ENDS
END START
4、 查找a2中最大元素的值和该值在a2变量中的对应下标,然后分别显示这个最大值和其下标。
DATAS SEGMENT
a1 db 12,2,113,4,5
a2 word 12,2,113,4,5
srcstring db 'abcd'
a3 db 'testtesttest'
DATAS ENDS
EXTRAS SEGMENT
b1 db 1,2,3
deststring db lengthof srcstring dup (?)
b2 db 1,2,3,4,5
EXTRAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:EXTRAS
START:
MOV AX,DATAS
MOV DS,AX
mov si,offset a2
mov cl,1
call Find_largest_element
MOV AH,4CH
INT 21H
Find_largest_element proc
mov dl,[si];存最大值
mov ch,1;存下标
F2:
mov dh,[si+2]
cmp dl,dh
jb F1
jnb F3
F3:
add si,2
add cl,1
cmp cl,5
je Fover
jmp F2
F1:
mov dl,dh
add si,2
add cl,1
mov ch,cl
cmp cl,5
je Fover
jmp F2
Fover:
mov al,dl
mov ah,0
call output
call wrap
mov al,ch
mov ah,0
call output
ret
Find_largest_element endp
output proc;开始第一个函数
push bx
push cx
push dx
mov ch,0
mov cl,10
div cl
cmp al,0
ja o1
je o2
o1:
push ax
add ch,1
mov ah,0
div cl
cmp al,0
ja o1
je o2
o2:
mov dl,ah
add dl,48
mov ah,2
int 21h
cmp ch,0
ja o3
je o4
o3:
pop ax
sub ch,1
jmp o2
o4:
pop bx
pop cx
pop dx
ret ;返回
output endp;结束
wrap proc;换行函数
push dx
MOV DX,13
MOV AH,2
INT 21H
MOV DX,10
MOV AH,2
INT 21H
pop dx
ret
wrap endp
CODES ENDS
END STAR
5、 查找a2中最大元素的值和该值在a2变量中的对应下标,然后把a2中的这个最大值和最后一个元素互换位置(即a2中的5个元素变为12,2,4,5,113)。
DATAS SEGMENT
a1 db 12,2,113,4,5
a2 word 12,2,113,4,5
srcstring db 'abcd'
a3 db 'testtesttest'
DATAS ENDS
EXTRAS SEGMENT
b1 db 1,2,3
deststring db lengthof srcstring dup (?)
b2 db 1,2,3,4,5
EXTRAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:EXTRAS
START:
MOV AX,DATAS
MOV DS,AX
mov si,offset a2
mov cl,1
call Find_largest_element
MOV AH,4CH
INT 21H
Find_largest_element proc
mov dl,[si];存最大值
mov ch,1;存下标
F2:
mov dh,[si+2]
cmp dl,dh
jb F1
jnb F3
F3:
add si,2
add cl,1
cmp cl,5
je Fover
jmp F2
F1:
mov dl,dh
add si,2
add cl,1
mov ch,cl
cmp cl,5
je Fover
jmp F2
Fover:
mov al,dl
mov ah,0
call output
call wrap
mov al,ch
mov ah,0
call output
call swap;与最后一个元素交换
ret
Find_largest_element endp
output proc;输出函数
push bx
push cx
push dx
mov ch,0
mov cl,10
div cl
cmp al,0
ja o1
je o2
o1:
push ax
add ch,1
mov ah,0
div cl
cmp al,0
ja o1
je o2
o2:
mov dl,ah
add dl,48
mov ah,2
int 21h
cmp ch,0
ja o3
je o4
o3:
pop ax
sub ch,1
jmp o2
o4:
pop bx
pop cx
pop dx
ret ;返回
output endp;结束
wrap proc;换行函数
push dx
MOV DX,13
MOV AH,2
INT 21H
MOV DX,10
MOV AH,2
INT 21H
pop dx
ret
wrap endp
swap proc;交换函数
push ax
sub si,2
mov [si],dl;把最大值放到最后一位
mov si,offset a2
mov al,ch
mov ah,0
add si,ax
mov [si],dh;把最后一位放到最高位
pop ax
ret
swap endp
CODES ENDS
END START
__EOF__
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~