1、全部的作业微机原理的2.16物理地址:CS: 1 2 0 0 0 HIP: + F F 0 0 H = 2 1 F 0 0 H第三章作业3.2 MOV AX,DS:2000H是将DS段中2000H所在地址的内容传送至AX3.4 (1)错 (2)对(3)错 不能加地址(4)错(5)错 不能将存储器中的内容放到存储器中(6)对(7)对(8)错 CS不能被写 只能被读(9)对3.6 MOV AL,3000H MOV 2000H, AL3.11 立即寻址方式 寄存器操作数寻址方式 存储器操作数寻址方式 是寄存器操作数寻址方式3.13当SP或BP寄存器用作为基地址时,SS段是默认段地址; 其他情况下,D
2、S段是默认段地址。3.15 MOV BYTE PTRBP,200 是将数字“C8H”移入寄存器5200H6200H;MOV WORD PTRBX,2000 是将数字“7D0H”移入寄存器2100H1400H3.19因为有符号乘法指令为IMUL,无符号乘法指令为MUL。3.30(1)当前栈顶地址为FE00H (2)执行指令后栈顶地址为FDFE;栈顶两个字节的内容是3457H4.1 在下列程序运行后,给相应的寄存器佶存储器单元填入运行的结果。mov al,10hmov cx,1000hmov bx,2000hmov cx,alxchg cx,bxmov dh,bxmov dl,01hxchg cx
3、,bxmov bx,dlhlt结果:Ds:1000=10hDs:2000=01hCx=1000hBx=2000hDx=1001hAl=10h4.11 自0500h单元开始,有10个无符号数,编写程序,求这十个数的和(用八位数运算指令),把和放到050a和050b单元中(和用两个字节表示),且高位在050b单元。data segmentnum 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
4、,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 ptrbx+1,0clcloop loop1mov ax,4c00hint 21hcode endsend start4.4 利用变址寄存器,编写一段程序,把自1000h单元开始的100个数传到自1070h开始的存储区中。data segmentdata ends code se
5、gmentassume 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 21hcode endsend start4.17 若在存储器中有数a,b,c,d(他们连续存放),编写一个程序实现下列算式: (a*10+b)*10+c)*10+d (和=65535)data segmentnum dw 001ah,0026h,002ch,0045h;the result is 76
6、65result dw 1 dup(0)data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov si,0mov cx,3mov bx,000ahmov ax,numsiloop1:mul bxinc siinc siadd ax,numsiloop loop1mov result,axmov ax,4c00hint 21hcode endsend start4.18 在0100H单元和010aH单元开始,存放两个各为10个字节的BCD数(地址最低处放的是最低字节),求他们的和,且把和存入0114H开始的存
7、储单元中。data segmentnum1 db 0a1h,0a2h,0a3h,0a4h,0a5h,0b1h,0b2h,0b3h,0b4h,0b5hnum2 db 0c1h,0c2h,0c3h,0c4h,0c5h,0d1h,0d2h,0d3h,0d4h,0d5hdata ends code segmentassume cs:code,ds:datastart:mov ax,datamov ds,axclcmov bx,0114hmov si,0mov di,0mov cx,10loop1:mov ah,num1simov di+0100h,ahmov al,num2simov di+010ah
8、,aladc ah,almov bx,ahinc siinc diinc bxloop loop1mov al,0mov bx,aladc byte ptr bx,0mov ax,4c00hint 21hcode endsend start 结果如图:01 8B 89 87 85 83 B6 69 67 65 62 .4.20 在0200H单元中开始放有数A(低位在前):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 seg
9、mentna db 95h,43h,78h,62h,31h,04h,56h,28h,91h,01hnb db 78h,96h,42h,38h,15h,40h,78h,21h,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 bxloo
10、p loop1mov al,0mov bx,alsbb byte ptr bx,0mov ax,4c00hint 21hcode endsend start结果为负数:FF 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 ne
11、xtmov al,sinext:inc siloop loop1mov si,1000hmov si,almov ax,4c00hint 21hcode endsend start4.56 若自STRING 单元开始存放一个字符串(以字符$结尾),编写一个程序,统计这个字符串的长度(不包括$字符),并把字符串的长度放在STRING单元,把整个字符串下移两个存储单元。data segmentSTRING db abcdefghijklmn$leng dw 0data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axm
12、ov si,0next:mov cl,STRINGsiinc sicmp cl,$jne nextdec simov ax,si mov cx,siinc cxinc cxinc siloop1:mov bl,STRINGsimov STRINGsi+2,bldec siloop loop1mov word ptr STRING,axmov ax,4c00hint 21hcode endsend start4.70 编写一个24为无符号数相乘的程序。data segmentnum1 dw 0012h,3456hnum2 dw 0065h,4321h result dw 4 dup(0)data
13、 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 ch,ahmov ax,num1mul siadd result+2,axadc result,dxmov ah,c
14、hsahfadc result,0mov ax,4c00hint 21hcode endsend start4.75 若自STRING开始有一个字符串(以#号作为字符串的结束标志),编写一个程序,查找此字符串中有没有字符$,有多少个$(放在NUMBER单元中,没有$则其为0,否则即为$的个数);且把每一个$字符所存放的地址存入自POINTR开始的连续的存储单元中。data segmentSTRING db $ab$cde$fghij$klm$n#NUMBER Dw 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
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2