ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:22.63KB ,
资源ID:2645569      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2645569.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编例子 新.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

汇编例子 新.docx

1、汇编例子 新汇编实例:必须懂的题目:1、X,Y, W为字节类型的数,求Z=(W-X)*10+5)/(X+Y) DSeg Segment x db 38h y db 20hw db 30hz dw ? ten db 10 DSeg endsCSeg Segment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax mov bl,x add bl,y ;先求分母,存于BL mov al,w sub al,x imul ten add ax,5 idiv bl mov z,ax mov al,0 mov ah,4c

2、h int 21hCSeg ends end Start 2、X,Y 为字节类型数,求(X+Y)*8-(X-Y)*2)/16 写出完整的数据段和代码段,不用乘除指令DSeg Segment x db 38h y db 20hz db ? DSeg endsCSeg Segment Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax mov al,x add al,y cbw mov cl,3 sal ax,cl ;(x+y)*8 Mov bx,ax mov al,x sub al,y cbw Sal ax,1 ;(x-y)*2 sub bx,

3、ax mov cl,4 sar ax,cl ;(x+y)*8-(x-y)*2)/16 mov z,al mov al,0 mov ah,4ch int 21hCSeg ends end Start 1、统计字符串中空格的个数和字符串长度,字符串以$结束 DSeg Segment Buf db FDSHHFOEHWHLK$ cun db 0 len db 0DSeg endsCSeg Segment Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax mov al, 0 ;存放空格个数 lea bx, buf mov ah,0 ;存放字符串长度a

4、gain: cmp bytr ptrbx, $ je exit cmp byte ptr bx, 20h ;内存单元与立即数比较时要说明类型,这一句也可以成( mov dl, bx cmp dl, 20h) 20H是空格的ASC码 jne ss inc alss: inc ah inc bx jmp againexit: mov len ah mov con , al mov al,0 mov ah,4ch int 21hCSeg ends end Start2、YAi*Bi ,i=18 , Ai, Bi为字节型无符号数,分别存于NUM1和NUM2开始的连续存储单元中,结果存于REST单元中,

5、DSeg Segment num1 db 12,34,56,78,65,02,39,8num2 db 98,65,32,74,78,12,03,56result dw ?DSeg endsCSeg Segment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax mov cx,8 mov bx,0 mov si,offset num1 mov di,offset num2 again: mov al,si mul byte ptrdi add bx,ax inc di inc si loop again mo

6、v result,bx mov al,0 mov ah,4ch int 21hCSeg ends end Start已知数组A中包含4个互不相等的整数,数组B中包含7个互不相等的整数,编程把既在A中又在B中出现的整数存于数组C中DSeg Segment a db 23,67,2,1b db 23,35,67,5,6,7,9c db 4 dup(?) DSeg endsCSeg Segment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax mov si,0 ;SI为A数组的变址寄存器 mov bx,0 ;B

7、X为C数组的变址寄存器 l: mov cx,7 ;CX中存放B数组的个数,与LOOP配合控制循环次数 mov al,asi ;取A数组中的数存AL mov di,0 ;DI为B数组的变址寄存器,下一个A数组中的数与B数组的数比较时要把DI清0l1: cmp al,bdi jne next mov cbx,al inc bx next: inc di ;在循环结束前回到L1,取B数组的下一个数 loop l1 inc si ;在外循环结束前回到L,取A数组的下一个数 cmp si,4 ;4为A数组的个数 jb l ;控制外循环结束 mov al,0 mov ah,4ch int 21hCSeg

8、ends end Start显示*DSeg Segment Msg db 0dh,0ah,$ DSeg endsCSeg Segment Assume cs:CSeg,ds:DSegstart: mov ax,dseg mov ds,ax mov bx,9 ;第一行的字符个数lp: mov cx,bx ;字符个数送cx,为循环次数lop: mov dl,* ;以下3句为显示字符* mov ah,2 int 21h loop lop lea dx,msg ;以下3句回车换行 mov ah,09h int 21h dec bx dec bx cmp bx,1 ;BX2,判断,如果=0转l1 INC

9、 a2 ;负数 JMP L3L1: je l2 ;=0转L2 INC a1 ;正数 JMP L3L2: INC a3 ;零L3: ADD SI,2 LOOP LOP LEA DX,STR1 ;显示正数的字符串 MOV AH,09H INT 21H mov bh,0 mov bl,a1 CALL DISP ;通过调用显示子程序显示正数的个数,子程序中的要显示的数字存于bx中 LEA DX,STR4 ;回车换行 MOV AH,09H INT 21H LEA DX,STR2 MOV AH,09H INT 21H mov bl,a2 CALL DISP LEA DX,STR4 ;回车换行 MOV AH

10、,09H INT 21H LEA DX,STR3 MOV AH,09H INT 21H mov bl,a3 CALL DISP MOV AH,4CH INT 21HDISP PROC ;显示BX中的数 mov ch,4roll: mov cl,4 rol bx,cl mov dl,bl and dl,0fh cmp dl,9 jbe next1 add dl,07hnext1: add dl,30h mov ah,02h int 21h dec ch jnz roll RETDISP ENDPCODE ENDS END START2、编写子程序搜索指定字符缓冲区中是否有n,如果有用y替代。调用

11、子程序将BUF1,BUF2,BUF3中的n全部用y替代data segment buf1 db I am a student!,$ len1=$-buf1 buf2 db ewfhefnfn,$ len2=$-buf2 buf3 db hdinky,$ len3=$-buf3 m db 13,10,$data endscode segment assume cs:code, ds:datastart:mov ax,data mov ds,ax lea si,buf1 mov cx,len1 call cmmp lea si,buf2 mov cx,len2 call cmmp lea si,b

12、uf3 mov cx,len3 call cmmp mov ah,4ch int 21h;子程序的功能:搜索字符串中是否有n字符,如果有用y替代,并显示字符串;入口参数为字符串偏移地址SI,字符串长度CXcmmp proc mov dx,si ;将要显示的字符串的偏移地址送DX,用于显示字符串。这句应在子程序的开始,因为下面语句会改变SI的值l1: cmp byte ptrsi,n jnz l2 mov al,y mov si,al l2: inc si loop l1 mov ah,09h ;显示字符串 int 21h lea dx,m ;回车换行 int 21h retcmmp endpc

13、ode ends end start在buf开始的存储单元中查找字符E,找到后删除E后面的2个字符,并显示字符串。DATA SEGMENTCOUN DB 20BUF DB ABCDEFGHIJKLMNOPQRSTDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA ;START:MOV AX,DATA MOV DS,AX MOV ES,AX LEA DI,BUF MOV CL,COUN ;查找字符E MOV AL,E CLD REPNE SCASB JZ FOUND JMP DONE ;找到E后,DI指向E后面的第一个字符,将SI指向E后面的的

14、3个字符,进行字符串传送FOUND:MOV SI,DI ; ADD SI,2 ; SUB CL,2 ; CLD REP MOVSB ;显示字符串 MOV BYTE PTR BUF+18,$ ;DONE: LEA SI,BUF MOV DX,SI MOV AH,9 INT 21H MOV AH,4CH INT 21HCODE ENDS END START;将数据段中的数字改成*STACKS SEGMENT STACK DW 128 DUP(?)STACKS ENDS DSeg Segment string db di2h4nl5jhlcount equ $-stringDSeg endsCSeg

15、 Segment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax mov cx,count ;设置循环次数 mov si,offset string again: mov al,si cmp al,0 jb next cmp al,9 ja next mov al,* mov si,al next: inc si loop again ;字符个数减1,不为0继续循环Done: mov al,0 mov ah,4ch int 21hCSeg ends end Start ;从键盘输入一个字符串,并把它显示出来

16、STACKS SEGMENT STACK DW 128 DUP(?)STACKS ENDS DSeg Segment cf db 0dh,0ah,$msg db 20,?,20 dup(?)DSeg endsCSeg Segment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax lea dx,msg mov ah,0ah int 21h ;系统等待键盘输入字符串 lea dx,cf mov ah,09h int 21h Mov bl,m送到bx寄存器 Mov bh,0 mov msg+2bx,$ ;msg

17、+2+bx单元是字符串的结尾,显示的字符串要以$结束,在字符串的结束处加$ lea dx,msg+2 mov ah,09h int 21h mov al,0 mov ah,4ch int 21hCSeg ends end Start 显示十六进制数的子程序DISP PROC ;显示BX中的数 mov ch,4roll: mov cl,4 rol bx,cl mov dl,bl and dl,0fh cmp dl,9 jbe next1 add dl,07hnext1: add dl,30h mov ah,02h int 21h dec ch jnz roll RETDISP ENDP;内存首地

18、址为BUF 的10个字节数,累加求和,结果存于RESULT中STACKS SEGMENT STACK DW 128 DUP(?)STACKS ENDS DSeg Segment Buf db 3,4,56,7,8,-3,7,3,6,9 Res db ?DSeg endsCSeg Segment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax mov al, 0 lea bx, buf mov cx, 10aga: add al, bx inc bx loop aga mov res , al mov al,

19、0 mov ah,4ch int 21hCSeg endssg+1 ;字符串长度放在msg+1, end Start ;程序段也可以写成 mov al, 0 mov?bx,?0? mov?cx,?10aga:? add?al,?bufbx? inc?bx? ?loop?again mov res , al;内存首地址为BUF 的10个字节数,求0的个数,并显示出来。STACKS SEGMENT STACK DW 128 DUP(?)STACKS ENDS DSeg Segment BUF DB 0,-1,2,4,3,-4,5,6,-7,0RESULT db 0 DSeg endsCSeg Se

20、gment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax MOV AL, 0 ;存放0的个数 LEA SI,BUF MOV CX,10LOP: CMP BYTE PTRSI, 0 JNE L3 INC AL ;0的个数L3: INC SI LOOP LOP MOV BL,AL MOV BH,0 CALL DISP ;调用显示子程序 mov al,0 mov ah,4ch int 21h DISP PROC ;显示BX中的数 mov ch,4roll: mov cl,4 rol bx,cl mov dl,b

21、l and dl,0fh cmp dl,9 jbe next1 add dl,07hnext1: add dl,30h mov ah,02h int 21h dec ch jnz roll RETDISP ENDPCSeg ends end Start ;有数据段STACKS SEGMENT STACK DW 128 DUP(?)STACKS ENDS DSeg Segment buf dw 12,34,-45,-567,35,-54,23,-56,-432,-78,-678,43,76,321,761, -890,670,125,987,912 buf1 dw 20 dup(?)buf2 d

22、w 20 dup(?)DSeg endsCSeg Segment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax mov cx,20 lea bx,buf lea si,buf1 lea di,buf2again: mov ax,bx cmp ax,0 jl l mov si,ax inc si inc si jmp next l: mov Di,ax inc di inc di next: inc bx inc bx loop again mov al,0 mov ah,4ch int 21hCSeg e

23、nds end Start ;将一个字符串中的所有大写字母改为小写字母,字符串以0结尾。STACKS SEGMENT STACK DW 128 DUP(?)STACKS ENDS DSeg Segment String db AHLGLKNDLJ,0DSeg endsCSeg Segment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax mov bx,offset stringagain: mov al,bx ;取一个字符 or al,al ;是否为结尾符0 jz done ;是,退出循环 cmp al,

24、A ;是否为大写AZ jb next cmp al,Z ja next or al,20h ;是,转换为小写字母 mov bx,al ;仍保存在原位置next: inc bx jmp again ;继续循环done: mov al,0 mov ah,4ch int 21hCSeg ends end Start ;YAi*Bi ,i=18 , Ai, Bi为字节型无符号数,分别存于NUM1和NUM2开始的连续存储单元中,结果存于REST单元中。请同学们用另一种方法做,并把结果显示在屏幕上DSeg Segment num1 db 12,34,56,78,65,02,39,8num2 db 98,6

25、5,32,74,78,12,03,56result dw ?DSeg endsCSeg Segment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax mov cx,8 mov bx,0 mov si,offset num1 mov di,offset num2 again: mov al,si mul byte ptrdi add bx,ax inc di inc si loop again mov result,bx mov al,0 mov ah,4ch int 21hCSeg ends end St

26、art;在首地址为MSG1的字数组中存放了10个16进制数,求出平均数,以及大于平均数的数个数,存放在count单元中.DSeg Segment Msg1 dw 300H,300H,300H,300H,300H,100H,100H,100H,100H,100Hlen dw 10 Msg2 dw ? ;存放平均数 count db 0 ;大于平均数的数的个数 DSeg endsCSeg Segment para public CODE Assume cs:CSeg,ds:DSegStart: mov ax,DSeg mov ds,ax ;求和 lea si,msg1 mov ax, si mov cx,9 pp: add si,2 add ax,si loop pp ;求平均数 mov dx,0 idiv len mov msg2,ax ;求大于平均数的个数 mov cx,len

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2