汇编_8086作业
来源:互联网 发布:mysql update 走索引 编辑:程序博客网 时间:2024/06/05 19:51
D:/www_local/asm/test/test10.asm
D:/www_local/asm/test/test10_1.asm
D:/www_local/asm/test/test8.asm
D:/www_local/asm/test/test8_0.asm
D:/www_local/asm/test/test9.asm
D:/www_local/asm/test/test9_1.asm
d:/www_local/asm/0.asm
d:/www_local/asm/1.asm
d:/www_local/asm/2.asm
d:/www_local/asm/3.asm
d:/www_local/asm/4.asm
d:/www_local/asm/5.asm
d:/www_local/asm/6.asm
d:/www_local/asm/7.asm
d:/www_local/asm/8.asm
d:/www_local/asm/9.asm
d:/www_local/asm/10.asm
d:/www_local/asm/11.asm
d:/www_local/asm/12.asm
D:/www_local/asm/test/131.asm
d:/www_local/asm/13.asm
d:/www_local/asm/14.asm
d:/www_local/asm/15.asm
d:/www_local/asm/16.asm
d:/www_local/asm/17.asm
d:/www_local/asm/18.asm
d:/www_local/asm/19.asm
d:/www_local/asm/20.asm
d:/www_local/asm/21.asm
d:/www_local/asm/22.asm
d:/www_local/asm/23.asm
d:/www_local/asm/24.asm
d:/www_local/asm/25.asm
d:/www_local/asm/26.asm
d:/www_local/asm/27.asm
d:/www_local/asm/28.asm
d:/www_local/asm/29.asm
d:/www_local/asm/30.asm
d:/www_local/asm/31.asm
d:/www_local/asm/32.asm
d:/www_local/asm/33.asm
assume cs:codesg,ds:datasgdatasg segmentdb 'welcome to masm!',0;以零结尾;db 4ah,71h,0cah ;定义3重颜色datasg endscodesg segmentstart: mov ax,datasgmov ds,axmov dh,2 ;在第8行显示mov dl,0 ;在第3列显示mov cl,71h;定义颜色mov si,0;si指向字符串;==========关联===============call show_strmov ax,4c00hint 21h show_str:mov bx,0mov ax,0b800h;指向现存段mov es,axmov al,160;8 bitmul dh;8 bit result in axadd bx,axmov al,2;8 bitmov ah,0mul dl;8 bit result in axadd bx,ax;bx存放的是显示的偏移地址s:;mov bl,71h;由于cx要循环判断,所以颜色用bl记录mov cl,ds:[si];第八位存放字符串mov ch,0jcxz game_over;如果cx为0即遇到结束符号,返回;如果不为零,在指定位置显示mov byte ptr es:[bx+di],cl ;先写asciimov byte ptr es:[bx+1+di],0cah;再写颜色属性add di,2;指向下个显示位置inc si;指向下个字符串jmp short s game_over:retcodesg endsend start
D:/www_local/asm/test/test10_1.asm
assume cs:codesg,ss:stacksgstacksg segmentdb 16 dup(0)stacksg ends;计算1000000/10 即000f4240h 000ahcodesg segmentstart: mov ax,stacksgmov ss,axmov sp,10h mov dx,000fh;被除数的高十六位mov ax,4240h;被除数的low十六位mov cx,000ah;十六位的除数call divdwmov ax,4c00hint 21h divdw: ;先要把被除数的低十六位保存计算高十六位push axmov ax,dxmov dx,0div cx;以上3句是先除高位结果dx为余数AX为商mov bx,ax;将商先缓存pop ax;将ax还原为被除数的第十六位div cx;高十六位dx是前面的余数 此时余数存放于dx 商放于axmov cx,dx;将余数转到cx中mov dx,bx;将高十六� 位除后的商放入dx�retcodesg endsend start
D:/www_local/asm/test/test8.asm
assume cs:codesgcodesg segmentmov ax,4c00hint 21hstart: mov ax,0 s:nopnopmov si,offset s2mov ax,cs:[si]mov di,offset smov cs:[di],ax ;上面4句实现了将s2处的机器码复制到s处替换掉nop nops0: jmp short ss1: mov ax,0FFFFhint 21hmov ax,0ffffhs2: jmp short s1 ;jmp记录着便宜距离codesg endsend start
D:/www_local/asm/test/test8_0.asm
assume cs:codesgcodesg segment mov ax,4c00h int 21hstart: mov ax,0 s: nop ;占一字节,机器码90 nop mov di,offset s mov si,offset s2 mov ax,cs:[si] ;(ax)=jmp short s1指令对应的机器码EBF6 mov cs:[di],ax ;jmp short s1覆盖s处指令2条nop指令 s0: jmp short s ;关键是机器码:EBF6 jmp 向上8字节 s1: mov ax,0 int 21h mov ax,0 s2: jmp short s1 nopcodesg endsend start
D:/www_local/asm/test/test9.asm
assume cs:codesg,ds:datasg,ss:stacksgdatasg segmentdb 'welcome to masm!';16个字节db 4ah,71h,0cah ;定义3重颜色datasg endsstacksg segmentdb 16 dup(0)stacksg endscodesg segmentstart: mov ax,datasgmov ds,axmov ax,0b884h ;b800是duan b884h是中间哪行mov es,ax ;要写的目的mov ax,stacksgmov ss,axmov sp,10h;==========关联===============mov di,0 ;控制显示3行 每次递增a0hmov cx,3;控制显示3行flag2:push cxmov bx,0;控制写出16个字符一个字符占两个字节(ASCII和属性)mov si,0;控制读取16个字节mov cx,16flag:mov al,[si]mov byte ptr es:[bx+di].0b0h,al ;先写asciimov al,10h[di];读取颜色mov byte ptr es:[bx+di].0b1h,al;再写颜色属性add bx,2add si,1loop flagpop cxadd di,0a0h;转到下一行 即跳过80乘以2等于160个字节loop flag2mov ax,4c00hint 21hcodesg endsend start
D:/www_local/asm/test/test9_1.asm
assume cs:codesgcodesg segmentstart: mov ax,0b810h ;b800是第一行 现在是第二行mov ds,axmov bx,0mov byte ptr [bx],01hinc bxmov byte ptr [bx],01hinc bxmov byte ptr [bx],02hinc bxmov byte ptr [bx],02hmov ax,4c00hint 21hcodesg endsend start
d:/www_local/asm/0.asm
assume cs:abcabc segment mov ax,1234h mov ax,4c00h int 21habc endsend
d:/www_local/asm/1.asm
assume cs:abcabc segment start: mov ax,1234hmov bx,5678hadd ax,1111hmov ax,4c00hint 21habc endsend start
d:/www_local/asm/2.asm
assume cs:abcabc segment start: mov ax,2hmov cx,11flag:add ax,axloop flagmov ax,4c00hint 21habc endsend start
d:/www_local/asm/3.asm
assume cs:abcabc segment start: mov ax,0ffffhmov ds,axmov bx,6mov dx,0mov al,[bx]mov ah,0mov cx,3flag:add dx,axloop flagmov ax,4c00hint 21habc endsend start
d:/www_local/asm/4.asm
assume cs:abcabc segment start: mov ax,0ffffhmov ds,axmov al,ds:[0]mov bl,ds:[1]mov cl,ds:[2]mov dl,ds:[3]mov ax,4c00hint 21habc endsend start
d:/www_local/asm/5.asm
assume cs:abcabc segment start: mov bx,0mov ax,0ffffhmov ds,axmov ax,0020hmov es,axmov cx,12flag:mov al,ds:[bx]mov es:[bx],alinc bxloop flagmov ax,4c00hint 21habc endsend start
d:/www_local/asm/6.asm
assume cs:abcabc segment start: mov bx,0mov ax,0ffffhmov ds,axmov dx,0mov cx,12flag:mov al,ds:[bx]mov ah,0add dx,axinc bxloop flagmov ax,4c00hint 21habc endsend start
d:/www_local/asm/7.asm
assume cs:abcabc segmentdw 0123H,0456H,0789H,1111H,1111H,1111H,1111H,1111H start: mov ax,0mov bx,0mov cx,8flag:add ax,cs:[bx]add bx,2loop flagmov ax,4c00hint 21habc endsend start
d:/www_local/asm/8.asm
assume cs:abcabc segmentdw 0123H,0456H,0789H,1111H,1111H,1111H,1111H,1111Hdw 0h,0h,0h,0h,0h,0h,0h,0h start: mov ax,csmov ss,axmov sp,20hmov bx,0mov cx,8flag:push cs:[bx]add bx,2loop flagmov bx,0mov cx,8flag2:pop cs:[bx]add bx,2loop flag2mov ax,4c00hint 21habc endsend start
d:/www_local/asm/9.asm
assume cs:codesg,ds:datasg,ss:stacksgdatasg segmentdw 0123H,0456H,0789H,1111H,1111H,1111H,1111H,1111Hdatasg endsstacksg segmentdw 0h,0h,0h,0h,0h,0h,0h,0hstacksg endscodesg segment entry: mov ax,datasgmov ds,axmov ax,stacksgmov ss,axmov sp,20hmov bx,0mov cx,8flag:push [bx]add bx,2loop flagmov bx,0mov cx,8flag2:pop [bx]add bx,2loop flag2mov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/10.asm
assume cs:codesg,ds:datasg,ss:stacksgdatasg segmentdw 0123H,0456H,0789H,1111H,1111H,1111H,1111H,1111Hdatasg endsstacksg segmentdw 0h,0h,0h,0h,0h,0h,0h,0hstacksg endscodesg segment entry: mov ax,stacksgmov ss,axmov sp,10hmov ax,datasgmov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/11.asm
assume cs:codesg,ds:datasg,ss:stacksgdatasg segmentdw 0123H,0456Hdatasg endsstacksg segmentdw 0h,0hstacksg endscodesg segment entry: mov ax,stacksgmov ss,axmov sp,16hmov ax,datasgmov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/12.asm
assume cs:codesg,ds:datasg,ss:stacksgcodesg segment entry: mov ax,stacksgmov ss,axmov sp,16hmov ax,datasgmov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcodesg endsdatasg segmentdw 0123H,0456Hdatasg endsstacksg segmentdw 0h,0hstacksg endsend entry
D:/www_local/asm/test/131.asm
assume cs:codesga segment db 1,2,3,4,5,6,7,8a endsb segment db 1,2,3,4,5,6,7,8b endscc segment db 0,0,0,0,0,0,0,0cc endscodesg segment entry: mov ax,amov ds,axmov ax,bmov es,axmov ax,ccmov ss,axmov bx,0mov cx,8flag:mov al,ds:[bx]mov ss:[bx],almov al,es:[bx]add ss:[bx],alinc bxloop flagmov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/13.asm
assume cs:codesga segment db 1,2,3,4,5,6,7,8a endsb segment db 1,2,3,4,5,6,7,8b endscc segment db 0,0,0,0,0,0,0,0cc endscodesg segment entry: mov ax,amov ds,axmov ax,ccmov es,axmov bx,0mov cx,8flag:mov al,ds:[bx]mov es:[bx],alinc bxloop flagmov ax,bmov ds,axmov bx,0mov cx,8flag2:mov al,ds:[bx]add es:[bx],alinc bxloop flag2mov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/14.asm
assume cs:codesga segment dw 1h,2h,3h,4h,5h,6h,7h,8ha endsb segment dw 0h,0h,0h,0h,0h,0h,0h,0hb endscodesg segment entry: mov ax,bmov ss,axmov sp,10hmov ax,amov ds,axmov bx,0mov cx,8flag:push [bx]add bx,2loop flagmov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/15.asm
assume cs:codesg,ds:datasgdatasg segment db 'abcd'db '0123'datasg endscodesg segment entry: mov ax,datasgmov ds,axmov al,'a'mov bl,'b'mov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/16.asm
assume cs:codesg,ds:datasgdatasg segment db 'abcd'db '0123'datasg endscodesg segment entry: mov ax,datasgmov ds,axmov bx,0mov cx,4flag:mov al,[bx]and al,11011111bmov [bx],alinc bxloop flagmov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/17.asm
assume cs:codesg,ds:datasgdatasg segment db 'abcd'db '0123'datasg endscodesg segment entry: mov ax,datasgmov ds,axmov bx,0mov al,[0] ;这种写法是错误mov al,ds:[bx+1]mov al,ds:[2+bx]mov al,ds:3[bx]mov al,ds:[bx].24mov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/18.asm
assume cs:codesg,ds:datasgdatasg segment db 'abcd'db 'ABCD'datasg endscodesg segment entry: mov ax,datasgmov ds,axmov bx,0mov cx,5flag:mov al,0[bx]and al,11011111bmov 0[bx],almov al,5[bx]or al,00100000bmov 5[bx],alinc bxloop flagmov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/19.asm
assume cs:codesg,ds:datasgdatasg segment db 'abcd'db '....'datasg endscodesg segment entry: mov ax,datasgmov ds,axmov si,0mov cx,4flag:mov al,0[si]mov 4[si],alinc siloop flagmov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/20.asm
assume cs:codesg,ds:datasg,ss:stacksgcodesg segment entry: mov ax,datasgmov ds,axmov ax,stacksgmov ss,axmov sp,8mov bx,0mov cx,4flag:mov si,0push cxmov cx,4flag0:mov al,[bx][2+si]and al,11011111bmov [bx][2+si],alinc siloop flag0pop cxadd bx,6loop flagmov ax,4c00hint 21hcodesg endsdatasg segment db '1.abcd'db '2.abcd'db '3.abcd'db '4.abcd'datasg endsstacksg segmentdw 0h,0h,0h,0hstacksg endsend entry
d:/www_local/asm/21.asm
assume cs:codesg,ds:datasg,ss:stacksgdatasg segment db '1.ab'db '2.ab'datasg endsstacksg segmentdw 0h,0h,0h,0hstacksg endscodesg segment entry: mov ax,datasgmov ds,axmov ax,stacksgmov ss,axmov sp,8mov bx,0mov cx,2flag:mov si,0push cxmov cx,2flag0:mov al,[bx][2+si]and al,11011111bmov [bx][2+si],alinc siloop flag0pop cxadd bx,4loop flagmov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/22.asm
assume cs:codesgcodesg segment entry: mov dx,0001hmov ax,86a1hmov bx,100div bxmov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/23.asm
assume cs:codesgcodesg segment entry: mov ax,1001mov bl,100div blmov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/24.asm
assume cs:codesg,ds:datasgdatasg segmentdd 100001dw 100dw 0hdatasg endscodesg segment entry: mov ax,datasgmov ds,axmov ax,ds:[0] ;put low 16bit into axmov dx,ds:[2] ;put high 16bit into dxdiv word ptr ds:[4]mov ds:[6],axmov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/25.asm
assume cs:codesg,ds:datasg,es:tabledatasg segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995' dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11452,14430,15257,17800 ;peoplesdatasg endstable segment db 21 dup ('year summ ne ?? ') ;total 21 yearstable endscodesg segment entry: mov ax,datasgmov ds,ax ;sourcemov ax,tablemov es,ax ;产生关联;================================mov bx,0mov bp,0mov cx,21flag2:mov dx,cx;================================mov si,0 ; si=si+1bytemov cx,4 ;‘1975’flag:mov al,ds:[bx].0h[si] ;y e a rmov es:[bp].0h[si],al ;y e a rmov al,ds:[bx].54h[si] ;incomemov es:[bp].5h[si],al ;incomeadd si,1loop flag;================================add bx,4add bp,16mov cx,dxloop flag2;===============拷贝人数=================mov bx,0mov bp,0mov cx,21flag3: mov ax,ds:0a8h[bx] ;peoplemov es:0ah[bp],ax ;peopleadd bx,2add bp,16loop flag3;================计算人均收入16================mov bx,0mov si,0mov bp,0mov cx,21flag4: mov ax,ds:54h[bx] ; lowmov dx,ds:54h[bx+2] ; highdiv word ptr ds:0a8h[si];peoplemov es:0dh[bp],ax ;division shangadd bx,4;income 4byteadd si,2 ;people 2byteadd bp,16;target loop flag4mov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/26.asm
assume cs:codesgcodesg segment entry: mov ax,0jmp short sadd ax,1add ax,axs:add ax,1mov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/27.asm
assume cs:codesgcodesg segment entry: mov ax,0;jmp near ptr sjmp far ptr sdb 256 dup(0)add ax,1add ax,axs:add ax,1mov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/28.asm
assume cs:codesgcodesg segment entry: mov ax,0123hmov ds:[0],axmov ds:[2],4567hjmp dword ptr ds:[0];jmp near ptr s;jmp far ptr smov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/29.asm
assume cs:codesgcodesg segment entry: mov ax,0123hjmp short sdb 138 dup(0)s:mov ax,4567h;jmp dword ptr ds:[0];jmp near ptr s;jmp far ptr smov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/30.asm
assume cs:codesg,ss:stacksgstacksg segmentdb 16 dup(0)stacksg endscodesg segmentmov ax,4c00hint 21h entry: mov ax,stacksgmov ss,axmov sp,16mov ax,0push axret ;相当于pop ipcodesg endsend entry
d:/www_local/asm/31.asm
assume cs:codesg,ss:stacksgstacksg segmentdb 16 dup(0)stacksg endscodesg segmentmov ax,4c00hint 21h entry: mov ax,stacksgmov ss,axmov sp,16mov ax,0push cspush axret ;相当于pop ip ,pop cscodesg endsend entry
d:/www_local/asm/32.asm
assume cs:codesg,ss:datasgdatasg segmentdb 16 dup(0)datasg endscodesg segment entry: mov ax,datasgmov ss,axmov sp,16mov word ptr ss:[0],offset smov ss:[2],cscall dword ptr ss:[0]nops:mov ax, offset ssub ax,ss:[0ch] ;s处的偏移减去nop处的偏移mov bx,cssub bx,ss:[0eh]mov ax,4c00hint 21hcodesg endsend entry
d:/www_local/asm/33.asm
assume cs:codesg,ss:datasgdatasg segmentdw 1,2,3,4,5,6,7,8dd 8 dup(0)datasg endscodesg segment entry: mov ax,datasgmov ds,axmov si,0 ;读取源mov di,0;写入目的mov cx,8flag:mov bx,ds:[si]call cubemov ds:10h[di],ax;把结果放到下一组内存单元mov ds:12h[di],dxadd si,2add di,4loop flagmov ax,4c00hint 21hcube:mov ax,bxmul bxmul bxret ;结果高16位在dx 第16位在axcodesg endsend entry
0 0
- 汇编_8086作业
- 汇编_8086/8088寻址方式和指令系统
- 汇编作业
- 汇编作业
- 汇编作业
- 汇编作业
- 第一次汇编作业
- 第二次的汇编作业
- 汇编作业(2006.5.2)
- 汇编作业(2006.5.17)
- 反汇编小作业
- 32位汇编作业
- 我的第一次汇编作业!
- 我的汇编作业3
- 汇编作业(2006.5.3)
- 汇编作业(2006.5.9)
- 汇编作业(2006.5.10)
- 汇编作业(2006.5.19)
- ubuntu操作系统学习笔记之文本处理
- 位操作 之三
- myEclipse从svn导出项目报unable to load default svn client错误
- 给他人同意
- android 学习: SurfaceView
- 汇编_8086作业
- 如何让传统行业的电商引发口碑效应并营销
- 常用javascript片断
- 开源粉末3D打印机 Pwdr
- Shell Script: find and delete
- 使用 DISM 脱机添加和删除驱动程序
- Rails3 session应用
- iOS之MVC架构
- 有一对兔子,从出生后第3个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?