微机原理与汇编语言--第五周作业

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指令)

DATAS SEGMENT ;此处输入数据段代码 a1 byte 9 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 ;二进制显示十进制数 mov si,offset a1 call Display_binary_numbers MOV AH,4CH INT 21H Display_binary_numbers proc push bx push cx push dx mov al,[si];给al赋值 mov cl,al;al会返回输出的字符,所以用cl存值 mov bl,1 mov bh,8 D1: rol cl,1 sub bh,1 mov dl,cl and dl,bl add dl,48 mov ah,2 int 21h cmp bh,0 je Dover ja D1 Dover: pop bx pop cx pop dx ret Display_binary_numbers endp CODES ENDS END START
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 AH,4CH INT 21H CODES ENDS END START

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__

本文作者坤舆小菜鸡
本文链接https://www.cnblogs.com/HBU-xuhaiyang/p/17223191.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   坤舆小菜鸡  阅读(33)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示