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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

汇编实例.docx

1、汇编实例例1:要求将两个5字节16进制数相加。程序如下:DATA SEGMENT DATA1 DB 0F8H , 60H , 0ACH , 74H , 3BH DATA2 DB 0C1H , 36H , 9EH , 0D5H , 20H DATA ENDS CODE SEGMENT ASSUME CS : CODE , DS : DATASTART : MOV AX , DATA MOV DS , AX MOV CX , 5 MOV SI , 0 CLC LOOPER : MOV AL , DATA2SI ADC DATA1SI , AL INC SI DEC CX JNZ LOOPER CO

2、DE ENDS END START 例2:试编制一个程序把BX寄存器内的二进制数用十六进制数形式在屏幕上显示出来。CODE SEGMENTASSUME CS:CODESTART:PUSH DSSUB AX,AXPUSH AXMOV BX,12ABH MOV CH,4ROTATE:MOV CL,4 ROL BX,CL MOV AL,BL AND AL,OFH ADD AL,30H CMP AL,3AH JL PRINTIT ADD AL,7HPRINTIT: MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE RETCODE ENDS END START例3

3、:在ADDR单元中存放着数Y的地址,试编制一程序把Y中1的个数存入COUNT单元中。DATA SEGMENT ADDR DW NUMBER NUMBER DW Y COUNT DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV CX,0 MOV BX,ADDR MOV AX,BXREPEAT: TEST AX,0FFFFH JZ EXIT JNS SHIFT INC CXSHIFT: SHL AX,1 JMP REPEATEXIT:

4、MOV COUNT,CX RETCODE ENDS END START例4:将正数N插入一个已整序的字数组的正确位置。该数组的首地址和末地址分别为ARRAY_HEAD和ARRAY_END,其中所有数均为正数且已按递增的次序排列。DATA SEGMENT ARRAY_HEAD DW 3,5,15,23,37,49,52,65,78,99 ARRAY_END DW 105 N DW 32DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AX,N

5、 MOV ARRAY_HEAD-2,0FFFFH MOV SI,0COMPARE: CMP ARRAY_ENDSI,AX JLE INSERT MOV BX,ARRAY_ENDSI MOV ARRAY_ENDSI+2,BX SUB SI,2 JMP SHORT COMPAREINSERT: MOV ARRAY_ENDSI+2,AX RETCODE ENDS END START例5:(逻辑尺示例)设有数组X和Y。X数组中有X1,X10;Y数组中有Y1,Y10;试编制程序计算Z1=X1+Y1 Z2=X2+Y2 Z3=X3-Y3 Z4=X4-Y4 Z5=X5-Y5 Z6=X6+Y6 Z7=X7-Y7

6、 Z8=X8-Y8Z9=X9+Y9 Z10=X10+Y10。DATA SEGMENT X DW X1,X2,X3,X4,X5,X6,X7,X8,X9,X10 Y DW Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9,Y19 Z DW Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z19LOGIC_RULE DW 00DCHDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV BX,0 MOV CX,10 MOV DX,LOGIN_

7、RULENEXT: MOV AX,XBX SHR DX,1 JC SUBTRACT ADD AX,YBX JMP SHORT RESULTSUBTRACT: SUB AX,YBXRESULT: MOV ZBX,AX ADD BX,2 LOOP NEXT RETCODE ENDS END START例6:编程实现:比较两个字符串STR1和STR2所含字符是否相等,若相等则显示“MATCH”,若不相等则显示“NO MATCH”。(两个字符串均在数据段给出)DATA SEGMENTSTR1 DB ABCDFECOUT1 DB $-STR1STR2 DB ABCDFCOUT2 DB $-STR2FIN

8、D DB MATCH, 0DH ,0AH , $NOFIND DB NO MATCH, 0DH ,0AH , $DATA ENDSCODE SEGMENT ASSUME CS : CODE, DS:DATA, ES: DATASTART : MOV AX , DATA MOV DS , AX MOV ES , AX MOV BL , COUT1 CMP BL , COUT2 JNE DISPNOLOOP1 : MOV CL , COUT1 MOV CH , 0 LEA SI , STR1 LEA DI , STR2 REPE CMPSB JNE DISPNO MOV AH , 09H LEA

9、DX , FIND INT 21H JMP EXITDISPNO: MOV AH , 09 LEA DX , NOFIND INT 21HEXIT: MOV AH , 4CH INT 21HCODE ENDS END START老师给的:DATA SEGMENTSTR1 DB ABCDFSTR2 DB ABCDFFIND DB MATCH, 0DH ,0AH , $NOFIND DB NO MATCH, 0DH ,0AH , $DATA ENDSCODE SEGMENT ASSUME CS : CODE, DS:DATA, ES: DATASTART : MOV AX , DATA MOV D

10、S , AX MOV ES , AXLOOP1 : LEA SI , STR1 LEA DI , STR2 MOV CX , STR2- STR1 CMP CX , FIND-STR2 JNZ DISPNO REPE CMPSB JNE DISPNO LEA DX , FIND JMP EXITDISPNO: LEA DX , NOFINDEXIT: MOV AH , 09H INT 21H MOV AH , 4CH INT 21H例7:编程实现:比较两个字符串STR1和STR2所含字符是否相等,若相等则显示“MATCH”,若不相等则显示“NO MATCH”。(其中一个字符串在数据段给出,另一

11、个用键盘输入,比较字符串是否相等)DATA SEGMENTSTR1 DB 21 DB ? DB 21 DUP(?)STR2 DB ABCCOUNT EQU $-STR2FIND DB MATCH, 0DH ,0AH , $NOFIND DB NO MATCH, 0DH ,0AH , $DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODE,ES:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV DX,OFFSET STR1 MOV AH,0AH INT 21H MOV CX,COUNT CMP CL,STR1+1 J

12、NE DISPNO LEA SI , STR1+2 LEA DI , STR2 MOV CX , COUNT REPE CMPSB JNE DISPNO MOV AH , 09H LEA DX , FIND INT 21H JMP EXITDISPNO: MOV AH , 09 LEA DX , NOFIND INT 21HEXIT: MOV AH , 4CH INT 21H MOV AH,4CH INT 21HCODE ENDS END START例8:编程实现:比较两个字符串STR1和STR2所含字符是否相等,若相等则显示“MATCH”,若不相等则显示“NO MATCH”。(两个数均用键盘

13、输入,比较字符串是否相等)老师给的:DATA SEGMENTSTR1 DB 20 DB ? DB 20 DUP(?)STR2 DB 20 DB ? DB 20 DUP(?)FIND DB MATCH, 0DH ,0AH , $NOFIND DB NO MATCH, 0DH ,0AH , $DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODE,ES:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV DX,OFFSET STR1 MOV AH,0AH INT 21H MOV DX,OFFSET STR2 MOV AH,

14、0AH INT 21H MOV AL,STR1+1 CMP AL,STR2+1 JNE DISPNO LEA SI , STR1+2 LEA DI , STR2+2 MOV CL , STR1+1 MOV CH,0 REPE CMPSB JNE DISPNO MOV AH , 09H LEA DX , FIND INT 21H JMP EXITDISPNO: MOV AH , 09 LEA DX , NOFIND INT 21HEXIT: MOV AH , 4CH INT 21H MOV AH,4CH INT 21HCODE ENDS END START例9:已知字数组A包含5个互不相等的整数

15、,字数组B包含5个互不相等的整数,编程实现:把既在A中又在B中出现的整数存放到字数组C中。DATA SEGMENT A DW 2,6,8,9,3 B DW 5,8,3,9,7 C DW 5 DUP(0)DATA ENDSCODE SEGMENT ASSUME CS : CODE , DS : DATASTART: MOV AX,DATA MOV DS , AX MOV SI , 0 MOV BX , 0 MOV CX , 5LOOP1: PUSH CX MOV DI , 0 MOV CX , 5 MOV AX , ASILOOP2: CMP BDI, AX JNE NO MOV CBX, AX

16、 ADD BX , 2NO: ADD DI , 2 LOOP LOOP2 ADD SI , 2 POP CX LOOP LOOP1 MOV AH , 4CH INT 21HCODE ENDS END START例10:编程实现:若两个指定的字节变量相等则调用ALLSAME子程序,显示“Y”,否则调用“NOTSAME”子程序,显示“N”。DATA SEGMENT VAR1 DB 1 VAR2 DB 2DATA ENDSCODE SEGMENTMAIN PROC FAR ASSUME DS:DATA,CS:CODESTART: PUSH DS SUB AX,AX PUSH AX MOV AX,DA

17、TA MOV DS,AX MOV AL,VAR1 CMP AL,VAR2 JE SAME CALL NOTSAME JMP EXITCMPSAME: CALL ALLSAMEEXITCMP: RETMAIN ENDPALLSAME PROC NEAR MOV DL,Y MOV AH,2 INT 21H RETALLSAME ENDPNOTSAME PROC NEAR MOV DL,N MOV AH,2 INT 21H RETNOTSAME ENDP RETCODE ENDS END START例11:编程:在显示器上显示HELLO字符串。DATA SEGMENT BUF DB HELLO,$D

18、ATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF MOV AH,9 INT 21H MOV AH,4CH INT 21HCODE ENDS END START例12:编程:从键盘输入一字符串(最多20个字符)到数据段中以CHAR为首地址的区域。DATA SEGMENT CHAR DB 21 DB ? DB 21 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATASTART: PUSH DS MOV A

19、X,0 PUSH AX MOV AX,DATA MOV DS,AX MOV DX,OFFSET CHAR MOV AH,0AH INT 21H RETCODE ENDS END START例13:编程实现:将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。(不要求有输出,用debug查看结果)DATA SEGMENTX DW 1234HMEM DB 4 DUP(?)DATA ENDSCODE SEGMENT ASSUME DS : DATA , CS : CODESTART : PUSH DS MOV AX,0 PUSH AX MOV AX,DATA

20、MOV DS,AX MOV CL,4 MOV CH,4 LEA BX,MEM MOV AX,XA1: MOV DX,AX AND DX,0FH MOV BYTE PTRBX,DL INC BX SHR AX,CL DEC CH JNZ A1B1: MOV DL,MEM MOV CL,MEM+1 MOV BL,MEM+2 MOV AL,MEM+3 RETCODE ENDS END START例14:运用子程序,键盘上输入一个十进制数,用十六进制显示出来, DECIHEX SEGMENT ASSUME CS: DECIHEXMAIN PROC FARREPEAT: CALL DECIBIN CAL

21、L CRLF CALL BINIHEX CALL CRLF JMP REPEATMAIN ENDPDECIBIN PROC NEAR MOV BX,0NEWCHAR: MOV AH,1 INT 21H SUB AL,30H JL EXIT CMP AL,9D JG EXIT CBW XCHG AX,BX MOV CX,10D MUL CX XCHG AX,BX ADD BX,AX JMP NEWCHAREXIT: RETDECIBIN ENDPBINIHEX PROC NEAR MOV CH,4ROTATE: MOV CL,4ROL BX,CLMOV AL,BLAND AL,0FHADD AL

22、,30HCMP AL,3AHJL PRINTITADD AL,7HPRINTIT: MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE RETBINIHEX ENDPCRLF PROC NEAR MOV DL,0DH MOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HRETCRLF ENDPDECIHEX ENDS END MAIN例15:8251初始化CPU发送十个字节CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100HSTART: JMP INIT BUFF DB 0123456789I

23、NIT: MOV DX,362H MOV AL,0 MOV DX,AL MOV DX,AL MOV DX,AL MOV AL,40H MOV DX,AL MOV AL,0FEH OUT DX,AL MOV AL,01H OUT DX,AL MOV SI,OFFSET BUFF MOV CX,10YYY1: MOV DX,362H IN AL,DX TEST AL,01H JE YYY1 MOV AL,SI MOV DX,360H OUT DX,AL INC SI LOOP YYY1 MOV AH,4CH INT 21HCODE ENDS END START例16:在以STR为首地址的缓冲区中,

24、有一组字符串,该字符串以“$”为结束符,编程统计该字符串的长度,结果存入RUS变量中。DATA SEGMENT STR DB ABCDE$ RUS DW ?DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODESTART: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV SI,0 MOV CX,0NEXT: MOV BL,STRSI CMP BL,$ JE EXIT INC CX INC SI JMP NEXTEXIT: MOV RUS,CX RETCODE ENDS END START例17:编程实现:从

25、键盘输入一系列以$为结束符的字符串,然后统计其中的非数字字符数。DATA SEGMENT BUF DB 50 DUP(?) COUNT DB 0DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODESTART: MOV AX,DATA MOV DS,AX LEA BX,BUFINPUT: MOV AH,1 INT 21H MOV BX,AL INC BX CMP AL,$ JNZ INPUT LEA BX,BUFNEXT: MOV CL,BX INC BX CMP CL,$ JZ DISP CMP CL,30H JB CONT CMP CL,39H JBE N

26、EXTCONT: INC COUNT JMP NEXTDISP: MOV AL,COUNT MOV AH,0 MOV AH,4CH INT 21HCODE ENDS END START例18:在DAT字节单元中有一个带符号数,判断其正负,若为正数,则屏幕显示“+”,若为负数,则屏幕显示“-”,若为0,则屏幕显示“0”。老师的方法:DATA SEGMENT DAT DB 10DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODESTART: MOV AX,DATA MOV DS,AX MOV AH,2 CMP DAT,0 JGE DY MOV DL,- INT

27、21H JMP EXITDY: JE EEQ几点注意事项:一、2号中断的前两句无先后顺序且3句话可分开写,不一定要写在一起。二、标号不具有跳转能力。三、程序中的地址是逻辑地址而非实际地址。故有数据段的时候,装入DS的方式必须有,这是找段基址要求的,否则程序在编译时有偏移量,找不到段基址出现错误。四、程序是顺序执行的。 MOV DL,+ INT 21H JMP EXITEEQ: MOV DL,0 INT 21HEXIT: MOV AH,4CH INT 21HCODE ENDS END START例19:ADDR中有Y的地址,在Y中统计“1”的个数放入COUNT中DATA SEGMENT ADDR

28、 DW NUMBER NUMBER DW 123111 COUNT DW ?DATA ENDSCODE SEGMRNT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,0 MOV BX,ADDR/Y的地址给AX MOV AX,BXREPEAT: TEST AX,0FFFFH JZ EXIT JNS SHIFT INC CXSHIFT: SHL AX,1 JMP REPEATEXIT: MOV COUNT,CX RETCODE ENDS END START符号函数:0输出+ 0 输出- 求极值 统计个数 芯片上 8255信号灯 8253 通道0计数100次

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1