1、第四章作业微机原理的第四章作业微机原理的部门: xxx 时间: xxx整理范文,仅供参考,可下载自行编辑4.1 在下列程序运行后,给相应的寄存器佶存储器单元填入运行的结果。mov al,10hmov cx,1000hmov bx,2000hmov cx,alxchg cx,bxmov dh,bxmov dl,01hxchg cx,bxmov bx,dlhlt结果:Ds:1000=10hDs:2000=01hCx=1000hBx=2000hDx=1001hAl=10h4.11 自0500h单元开始,有10个无符号数,编写程序,求这十个数的和,且高位在050b单元。b5E2RGbCAPdata s
2、egmentnum db 1ah,2ah,34h,56h,7bh,7ch,27h,38h,49h,6eh;the result is 02DBdata ends code segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov bl,0mov si,050ahmov si,blmov si,050bhmov si,blmov si,0500hmov di,0mov bx,050ahmov cx,10loop1:mov al,numdimov si,almov ah,siadd bx,ahinc siinc diadc byte pt
3、rbx+1,0clcloop loop1mov ax,4c00hint 21hcode endsend start4.4 利用变址寄存器,编写一段程序,把自1000h单元开始的100个数传到自1070h开始的存储区中。p1EanqFDPwdata segmentdata ends code segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov cx,99mov si,1000hmov di,1070hloop1:mov ax,simov di,axinc siinc diloop loop1mov ax,4c00hint 21hc
4、ode endsend start4.17 若在存储器中有数a,b,c,d他们连续存放),编写一个程序实现下列算式:a*10+b)*10+c)*10+d (和data segmentnum dw 001ah,0026h,002ch,0045h。the result is 7665result dw 1 dup(0data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov si,0mov cx,3mov bx,000ahmov ax,numsiloop1:mul bxinc siinc siadd ax,num
5、siloop loop1mov result,axmov ax,4c00hint 21hcode endsend start4.18 在0100H单元和010aH单元开始,存放两个各为10个字节的BCD数:NA=95 43 78 62 31 04 56 28 91 01在020AH单元中开始放有数B: NB=78 96 42 38 15 40 78 21 84 50求两数之差,且把值送入自0200H开始的存储区。data segmentna db 95h,43h,78h,62h,31h,04h,56h,28h,91h,01hnb db 78h,96h,42h,38h,15h,40h,78h,2
6、1h,84h,50hdata endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axclcmov bx,0200hmov si,0mov di,0mov cx,10loop1:mov ah,nasimov di+0200h,ahmov al,nbsimov di+020ah,alsbb ah,almov bx,ahinc siinc diinc bxloop loop1mov al,0mov bx,alsbb byte ptrbx,0mov ax,4c00hint 21hcode endsend start结果为负数:F
7、F B1 0D 06 DD C4 1C 2A 35 AD 1D4.37 若自0500H单元开始有1000个带符号数,把它们的最小值找出来,并且放在1000H单元中。data segmentdata ends code segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov cx,1000mov al,0mov si,0500hloop1:cmp al,sijl nextmov al,sinext:inc siloop loop1mov si,1000hmov si,almov ax,4c00hint 21hcode endsend
8、start4.56 若自STRING 单元开始存放一个字符串以字符$结尾),编写一个程序,统计这个字符串的长度data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov ax,num1+2mov si,num2+2mul simov result+6,axmov result+4,dxmov ax,num1mul siadd result+4,axadc result+2,dxmov ax,num1+2mov si,num2mul siadd result+4,axadc result+2,dxlahfmov
9、 ch,ahmov ax,num1mul siadd result+2,axadc result,dxmov ah,chsahfadc result,0mov ax,4c00hint 21hcode endsend start4.75 若自STRING开始有一个字符串以#号作为字符串的结束标志),编写一个程序,查找此字符串中有没有字符$,有多少个$放在NUMBER单元中,没有$则其为0,否则即为$的个数);且把每一个$字符所存放的地址存入自POINTR开始的连续的存储单元中。5PCzVD7HxAdata segmentSTRING db $ab$cde$fghij$klm$n#NUMBER D
10、w 0POINTR Dw 0data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov si,0mov di,0next:mov cl,STRINGsilea bx,STRINGsiinc sicmp cl,#je overcmp cl,$je foundjmp nextfound:mov POINTRdi,bxinc dijmp nextover:mov NUMBER,dimov ax,4c00hint 21hcode endsend start申明:所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。