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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

习题4汇编语言程序设计Word文档格式.docx

1、 SAL AL,01H ;(AL)=00010000H MOV BL, AL MOV CL ,02H SAL AL,CL ;(AL)=01000000H ADD AL,BL ;(AL)=01010000H 本程序实现了什么功能? 【答】 将AL中的内容乘以10。4.3 试分析下列程序完成什么功能? MOV DX,3F08H MOV AH,0A2H MOV CL,4 SHL DX,CL ;(DX)=F080H MOV BL,AH SHL BL,CL ;(BL)=20H SHR BL,CL ;(BL)=02H OR DL,BL ;(DL)=82H 【答】将DX中的低4位数据8H分离出来,将AH中的

2、低4位数据2H分离出来,合并为82H存放在DL。4.4 已知程序段如下: MOV AX,1234H ROL AX,CL DEC AX MOV CX,4 MUL CX 试问:(1)每条指令执行后,AX寄存器的内容是什么?(2)每条指令执行后,CF,SF及ZF的值分别是什么?(3)程序运行结束时,AX及DX寄存器的值为多少?【答】 MOV AX,1234H ; (AX)=1234H, CF=SF=ZF=0 ROL AX,CL ; (AX)=2341H ,CF=1,SF=ZF=0 DEC AX ; (AX)=2340H, CF=1,SF=ZF=0 MOV CX,4 ; MUL CX ;(AX)= 8

3、000H ,CF=ZF=0,SF=1,DX=04.5 试分析下列程序段: ADD AX,BX JNC L2 SUB AX,BX JNC L3 JMP SHORTL5 如果AX、BX的内容给定如下: AX BX (1)14C6H 80DCH (程序转向 L2) (2)B568H 54B7H (程序转向 SHORTL5 ) 问该程序在上述情况下执行后,程序转向何处?【答】 (1) 程序转向 L2。(2) 程序转向 SHORTL5。4.6 以下为某个数据段,试问各个变量分别占多少字节,该数据段共占多少字节? DATA SEGMENT VAR1 DW 9 ;2字节 VAR2 DD 10 DUP(?),

4、2 ;44字节 VAR3 DB 2 DUP(?,10 DUP(?) ;22字节 VAR4 DB HOW ARE YOU ;11字节 DATA ENDS【答】该数据段共占79字节。4.7 下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。 VAR1 DB 10,2 ; VAR2 DW 5DUP(?),0 ;12字节 VAR3 DB HOW ARE YOU?,$ ;13字节 VAR4 DD -1,1,0 ;Var1Var2Var3Var410?FFH2U00HOY01HERAWH$4.8 编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置

5、0FFH。【答】 参考程序: DATA SEGMENT OLDS DB 1,2,3,4,5 NEWS DB 1,2,3,4,A N = $-NEWS RESULT DB 0DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX ;初始化 MOV SI,OFFSET OLDS MOV DI,OFFSET NEWS MOV CX,N DON: MOV AL, SI CMP AL, DI JNZ NOEQU ;串不相等转 INC SI INC DI LOOP DON MOV AL,0 JMP OUTPUTNOE

6、QU: MOV AL,0FFH OUTPUT: MOV RESULT,ALSTOP: JMP STOP ;程序陷阱CODE ENDS END START4.9 编程求和Y=A1 + A2 + . + A100 。其中Ai为字节变量。DATA SEGMENTTABLE DW 1111H,2222H,3333H,2222HCOUNT EQU $-TABLEYAL DW ?YAH DW ?DATA ENDS ASSUME CS:MIAN PROC FARPUSH DSMOV AX, 0PUSH AXMOV AX, DATAMOV DS, AXMOV DX,0XOR AX, AX ;清AXMOV BX

7、, OFFSET TABLEMOV CX, 4LP: ADD AX, BX ;求和ADC DX,0 INC BXINC BX ;指向下一个数LOOP LP ;未加完,继续MOV YAL,AX ;存和MOV YAH,DXMAIN ENDPCODE ENDSEND START4.10 内存中以FIRST和SECOND开始的单元中分别存放着两个16位组合的十进制(BCD码)数,低位在前。编程序求这两个数的组合的十进制和,并存到以THIRD开始的单元。1325+9839=?FIRST DB 05H,02H,03H,01H ;SECOND DB 09H,03H, 08H,09H;THIRD DB 20

8、DUP (?)STACK SEGMENTST1 DB 100 DUP (SA)TOP1 EQU $ - ST1STACK ENDSASUMME CS:DATA,SS:STACKMAIN PROC FAR MOV AX, DAT ;初始化数据段MOV AX, STACK ;初始化堆栈段MOV SS, AXMOV AX, TOP1MOV SP, AXMOV CX, 4 ;计算4次MOV BX, OFFSET DAT1 ;取数据地址MOV SI , OFFSET DAT2 ;MOV DI , OFFSET SUM ;取结果地址MOV AH, 00H ;将暂存标志的AH清0DON1: MOV AL,

9、BX ;取第一个数 SAHF ;将AH中的标志送标志寄存器ADC AL, DI ;与第二个数带进位加AAA ;十进制校正LAHF ;将标志寄存器内容送AHOR AL, 30H ;计算值拼成ASCII码MOV DI, AL ;存结果的ASCII码指向第一个数的下一位INC SI ;指向第二个数的下一位INC DI ;指向结果单元的下一位LOOP DON1 ;未计算完,继续AND AH, 01H ;将最高位的进位标志送AHOR AH, 30H ;最高位的进位位拼成ASCII码MOV DI, AH ;存结果的最高位MOV AH, 02H ;调用DOS的02H功能显示MOV CX, 05H ;显示数据

10、的位数DON2: MOV DL,DI ;显示数据送DLINT 21H ;显示DEC DI ;显示数据所在存储单元加一LOOP DON2 ;未显示完,继续MOV AH, 4CH ;返回DOSINT 21H RET MAIN ENDP CODE ENDS END START 4.11 试编程序,统计由40000H开始的16K个单元中所存放的字符“A“的个数,并将结果存放在DX中。【答】 参考程序DATA SEGMENT BUF DB DFASFAAAFDFAAFFFACOUNT EQU $-BUFDATA ENDSSTACK SEGMENTBUFF DW 100 DUP (?M EQU $- ST

11、A STACK ENDSCODE SEGMENTBEGIN: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,MMOV SP,AXMOV CX,COUNTLEA SI,BUFMOV AL,CALL FindCharMOV AH,4CHINT 21H ;返回 DOSFindChar PROC NEAR PUSH DXNEXT : CMP SI,ALJNZ OTHERINC DXOTHER: INC SILOOP NEXTPOP DXRETFindChar ENDPCODE ENDSEND BEGIN4.12 统计数据块中正数与负数的个数,并将正数与

12、负数分别送到两个缓冲区。【答】解法一:采用串操作指令,要程序片段: BLOCK DB -1,-3,5,6,-2,0,20,10 PLUS_D DB 8 DUP(?) ;正数缓冲区 MINUS_D DB 8 DUP(?负数缓冲区 PLUS DB 0 MINUS DB 0 MOV SI,OFFSET BLOCK MOV DI,OFFSET PLUS_D MOV BX,OFFSET MINUS_D MOV CX, 8 ;数据个数送CX GOON: LODSB ;AL SI TEST AX, 80H JNZ JMIUS ;为负数,转 INC PLUS ;正数个数加一 STOSB ;DI AL,传正数

13、JMP AGAIN JMIUS: INC MINUS ;负数个数加一 XCHG BX, DI 送负数到缓冲区 XCHG BX, DI DEC CX JNZ GOON解法二:用比较指令CMP、转移指令JA/JNA/JB/JNB、循环指令LOOP等BLOCK DB -1,-3,5,6,-2,0,20,10 N EQU $-BLOCK PLUS_D DB 8 DUP(? PLUS DB 0 MINUS_D DB 8 DUP(?MINUS DB 0 MOV SI,OFFSET BLOCK MOV DI,OFFSET PLUS_D MOV BX,OFFSET MINUS_D MOV CX, N ;GOO

14、N: MOV AL,SI TEST AL, 80H JNZ JMIUS ; INC PLUS ; MOV DI,AL ;传正数 JMP AGAINJMIUS: INC MINUS ; MOV BX,AL INC BX AGAIN: DEC CX JNZ GOON4.13 编写一个子程序将AX中的十六进制数,转换成ASCII码, 存于ADR开始的四个单元中。提示:1)、AX中的数从左到右,转换成ASCII码,用循环左移ROL和AND指令,把提出的一个十六进制数置BL中; 2)、0 9 的ASCII码:30 39H,A F 的ASCII码:41H 46H。( 先把每个数加30H,判断是否为数字0

15、9?若是A F,再加07H,得字母的ASCII码。ADR DB 5 DUP(?MAIN PROC FAR MOV AX,7EC3H ;假设ax中存放7ec3hLEA SI,ADRMOV DL,4MOV BX,AXAND BX,000FHADD BL,30HCMP BL,9JG ADUSTJMP STOREADUST: ADD BL ,07HSTORE: MOV SI,BLINC SIMOV CL,4ROL AX,CLDEC DLJNZ AGAINMAIN ENDP4.14 编写一个子程序将AX中的2进制数,转换成10进制ASCII码, 存于ADR开始的五个单元中。【答】算法分析:(1)一个16

16、位2进制数,其值最大为65535。采用除10取余数方法,即可得到各个位。A)十进制数a5a4a3a2a1,除以10,余数a1为个位;商a5a4a3a2B)a5a4a3a2再除以10,余数a2为十位;C)以此类推,得到百位、千位、万位。(2)再将其加上30H则得到ASCII码,以便输出显示。(3)若数据为负数,用0减去该数,可得绝对值,再将符号位记录下来即可。参考程序:BIN DW -1988 ;带符号二进制数ADR DB 6 DUP(0),$ ;十进制数以ASCII码存储TRAN PROC FARMOV AX,DATA MOV DS,AX MOV AX,BIN LEA DI,ADR CALL

17、BINASCII ;十六位二进制数转换为十进制ascii码 INT 21H ;TRAN ENDP;子程序BINASCII功能:将16位二进制数转换为ASCII码,存于ADR开始的连续6个单元,并显示入口参数:AX=待转换的数, 预定义一个缓存区ADR,7个字节,最末字节为$字符。出口参数:DI=转换好的ASCII码首地址,显示该十进制数据BINASCII PROCPUSH BXPUSH CXPUSH DXTEST AX,8000H ;判断数据的符号JNS PLUS MINUS: MOV BYTE PTRDI,-将符号存储 NEG AX ;如是负数,取相反数去掉符号位 JMP GOPLUS: M

18、OV BYTE PTRDI,+将符号码存储 GO: ADD DI,5 ;DI指向个位MOV CX,5 MOV BX,10 LP: MOV DX,0DIV BX ;算法为a/10 ,余数为一个低位十进制数ADD DL,30H ;转换为ASCII码 MOV BYTE PTRDI,DL ;从个位开始存储 DEC DILOOP LPMOV DX,DIMOV AH,09HINT 21H ;POP CXPOP BX RETBINASCII ENDP END TRAN 4.15 编写一个子程序,对AL中的数据进行偶校验,并将经过校验的结果放回AL中。【答】参考程序:JIAOYAN PROC FARMOV A

19、L,1001110BOR AL, ALJNP NEXTMOV AL,0JMP DONE NEXT: MOV AL,1DONE: MOV AH,04CHINT 21HJIAOYAN ENDP4.16 从2000H单元开始的区域,存放100个字节的字符串,其中有几个$符号(ASCII 码为24),找出第一个$符号,送AL中,地址送BX。SEARCH PROC FARMOV DI,2000HMOV CX,100MOV AL,24HCLDREPNZ SCASB JNZ STOPDEC DIMOV BX,DIMOV AL,DISEARCH ENDP4.17 用串操作指令实现:先将100H个数从2170H

20、单元处搬到1000H单元处,然后从中检索等于AL中字符的单元,并将此单元换成空格字符。MOV SI,2170HMOV DI,1000HMOV CX,100HDO: REP MOVSBMOV DI,1000HREPNZ SCASBMOV DI,20HINC DICMP CX,0JNZ DO HLT4.18 从60H个元素中寻找一个最大的值,并放到AL中,假设这60个元素放在BUF开始的单元中。BUF DB 0,1,2,3,4,5,6,7,8,9 ;STA DB 20 DUP (?TOP EQU $- STAMOV DS,AXMOV AX,TOPMOV SP,AXMOV CX,10LEA BX,BUF CMP AL,BXJGE NEXT ;大于等于转移MOV AL,BXLOOP AGAINEND START4.19 排序程序设计: 把表中元素按值的大小升序排列。要求显示排序前和排序后的数据。TAB DB 8095554N=$-TAB OK DB 0DH,0AH,OK!STACK SEGMENT STA DB 20 DUP(?TOP EQU $-STASTAR: MOV AX,DATAMOV DS,AX ;MOV AX,TOPCALL ARRAY MOV AH,4CHINT 21H ;ARRAY PROC NEARPUSH BXPUSH CXPUSH DXMOV DL,N

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

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