ImageVerifierCode 换一换
格式:DOC , 页数:85 ,大小:133KB ,
资源ID:4512260      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(汇编语言程序设计钱晓捷课后答案.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

汇编语言程序设计钱晓捷课后答案.doc

1、. .汇编语言程序设计(第二版)钱晓捷习题答案第二章2.11AX1200h 2AX0100h 3AX4C2Ah 4AX3412h 5AX4C2Ah 6AX7856h 7AX65B7h 2.2(1)两操作数类型不匹配 (2) IP指令指针制止用户访问 (3)立即数不允许传给段存放器 (4)段存放器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为 BP (7)源操作数应为 BX+DI(8)立即数不能作目的操作数2.3lea bx,table;获取table的首地址,BX200H mov al,8;传送欲转换的数字,AL8 xlat;转换为格雷码,AL12H 2.4堆栈是一种按“先进后

2、出原那么存取数据的存储区域。 堆栈的两种根本操作是压栈和出栈,对应的指令是PUSH和POP。2.5mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop bx ;DS:0f79h=8057h 2.6AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 12.7W=X+Y+24-Z2.81ADD DX,BX 2ADD AL,BX+SI

3、 3ADD BX+0B2H,CX 4ADD WORD PTR 0520H,3412H 5ADD AL,0A0H 2.9;为了防止与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X;ax=A imul Y;dx,ax = A*B (将操作数看作符号数,以下同 mov cx,ax mov bx,dx;bx,ax - dx,ax =A*B mov ax,Z;ax = C cwd;dx,ax =C扩展符号后为双字 add cx,ax adc bx,dx;bx,cx - bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0;bx,cx DI,转到a

4、bove执行 cmp dx,di ja above;jnbe above 2假设AX SI,转到greater执行 cmp ax,si jg greater;jnle greater 3假设CX = 0,转到zero执行 cmp cx,0 jcxz zero jz zero4假设AXSI产生溢出,转到overflow执行; cmp ax,di jo overflow 5假设SIAX,转到less_eq执行; cmp si,ax cmp ax,si jle less_eq jge less_eq 6假设DIDX,转到below_eq执行。 cmp di,dx cmp dx,di e below_

5、eq jae below_eq2.25; 答:将首地址为array得20个字的数组求和,并将结果存入 total 单元中。2.26; (1) mov si,0 mov dl,stringsi;第1个字符送dl存放器 mov si,5 mov dh,stringsi;第6个字符送dh存放器 (2) xor si,si;si清零 mov al,buffersi;第一字节 inc si mov ah,buffersi;第二字节 mov cl,4 shl ah,cl;BCD码移到高半字节 or al,ah;组合成压缩BCD码 mov dl,al;存入dl寄. inc si mov al,buffers

6、i;第三字节 inc si mov ah,buffersi;第四字节 mov cl,4 shl ah,cl;BCD码移到高半字节 or al,ah;组合成压缩BCD码 mov dh,al;存入dh寄. (3) test dx,0f000h jz zero mov ax,-1 jmp done zero: mov ax,0 done: ret (4) lea bx,buffer1 lea dx,buffer2 mov cx,8;8个字节 xor si,si;si=0 clc;CF=0 (5) mov ax,0b800h mov ds,ax;段地址 xor si,si;地址偏移量si=0 xor

7、dx,dx;和的高字dx=0 mov cx,99;加的次数 mov ax,si;第一个数 again: inc si;指向下一个字单元 inc si add ax,si;加下一个数 jnc noc;无进位转 inc dx;有进位dx=dx+1 noc: dec cx;次数-1 jnz cx,again;非0继续加 ret (6) mov si,offset string mov cx,8000h;32k=215=8000h again: cmp si,$ jnz next mov si,20h;if si=$ si- next: inc si loop again (7) xor si,si;

8、si-0 mov cx,100;循环次数 again: dec arraysi dec cx jnz again (8) xor si,si ;si-0 coun: cmp stringsi,$ je done inc si jmp coun done: ret2.27; (1)使CF0 : clc; and ax,ax;or ax,ax (2)使AX0 : xor ax,ax; and ax,0;mov ax,0 (3)同时使AX0和CF0: and ax,0 ;xor ax,ax ;sub ax,ax2.29; 压缩BCD码加法:AXAXBX 出口参数:AXBCD码和2.34; okmsg

9、 db OK, $errmsg db Error ! Overflow !, $ mov ax,X sub ax,Y jo overflow mov dx,offset okmsg jmp next overflow: mov dx,errmsg next: mov ah,9 int 21h 错误: mov ax,X sub ax,Y jo overflow mov dx,offset okmsg okmsg db OK, $ mov dx,errmsg ;错误1:数据定义在代码中 mov ah,9 int 21h overflow: errmsg db Error ! Overflow !,

10、 $ mov dx,errmsg ; 错误2:缺少JMP指令 mov ah,9 int 21h 2.37; ;xt237.asm.model small.stack.dataarray db 255db 0array1 db 255 dup($)array2 db 0dh,0ah,$ .code.startupmov ah,0ah ; 键盘输入字符串mov dx,offset arrayint 21hmov dx,offset array2 ; 回车换行mov ah,09hint 21hmov bx,offset array1again: mov al,bxcmp al,$jz donecmp

11、 al,a ; 小于a和大于z的字符不是小写字母 nextcmp al,zja nextsub al,20h ; 在a和z之间的字符才是小写字母,转换为大写mov bx,al ; 保存到原位置next: inc bxjmp againdone: mov dx,offset array1mov ah,09hint 21h.exit 0end第三章(01) 3.1; 硬指令:每个硬指令就是一个处理器指令,在CPU执行时产生相应功能; 伪指令:伪指令并不产生处理器指令,它通常用于辅助汇编程序对源程序进展汇编。3.2;3.5; 编辑文本编辑程序汇编语言源程序.asm 汇编汇编程序目标模块文件.obj

12、连接连接程序可执行文件.exe或. 调试调试程序应用程序3.6; ;xt236.asm简化段定义格式 .model small ;定义程序的存储模式小模式 .stack;定义堆栈段默认1024个字节 .data;定义数据段 str1 ab Input Number:09 : ,0dh,0ah,$str2 ab Error!,0dh,0ah,$ .cade;定义代码段 .startup;说明程序的起始点,建立ds,ss的内容。 mov ah,09h;显示str1字符串 mov dx,offset str1 int 21h gtekey: mov ah,1;调用BIOS判断按键功能 int 16h

13、 jz getkey;如 zf = 0,无键按下,等待 cmp al,0;有键按下,键值与0比拟 error;如 0,出错处理 cmp al, 9 ;有键按下,键值与 9比拟 ja error;如 9,出错处理 mov ah,02h;调用DOS显示字符功能,显示该数字 mov dl,al int 21h .exit 0;终止程序执行,返回DOS error: mov ah,09h; 出错,调用DOS 功能显示str2字符串 mov dx,offset str2 int 21h jmp getkey;等待按键 end; 汇编完毕3.7; ;xt307.asmstack segment dw 51

14、2 dup(?) stack endsdata segmentarray db 255db 0array1 db 255 dup($)array2 db 0dh,0ah,$ data endscode segment codeassume cs:code, ds:data, ss:stackstart: mov ax,data mov ds,ax mov ah,0ah ; 键盘输入字符串mov dx,offset arrayint 21hmov dx,offset array2 ; 回车换行mov ah,09hint 21hmov bx,offset array1again: mov al,b

15、xcmp al,$jz donecmp al,a ; 小于a和大于z的字符不是小写字母 nextcmp al,zja nextsub al,20h ; 在a和z之间的字符才是小写字母,转换为大写mov bx,al ; 保存到原位置next: inc bxjmp againdone: mov dx,offset array1mov ah,09hint 21hmov ax,4c00hint 21hcode endsend start3.9; 1 mov byte ptr bx,1000;1000超出了一个字节X围 2 mov bx,offset mywordsi;存放器的值只有程序执行时才能确定,

16、 ;而offset是汇编过程计算偏移地址,故无法确定 ;可以改为lea bx,mywordsi 3 cmp mybyte1,mybyte2;两个都是存储单元,指令不允许 4 mov al,mybyte1+mybyte2 ;变量值只有执行时才确定,汇编过程不能计算 5 sub al,myword;字节量AL与字量myword,类型不匹配 6 jnz myword;Jcc指令只有相对寻址方式,不支持间接寻址方式3.10; 前者为“与操作硬指令助记符,可汇编成机器代码。 后者为逻辑运算符,在汇编时进展“与运算,产生具体数值。3.11; 注:对于逻辑运算,有关操作数可化为二进制数。 (1)mov al

17、,23h AND 45h OR 67h; 67h (2)mov ax,1234h/16 + 1Oh; 133h (3)mov ax,NOT(65535 XOR 1234h); 1234h (4)mov al, LOW 1234h OR HIGH 5678h; 76h (5)mov ax,23h SHL 4; 0234h (6)mov ax, 1234h SHR 6; 0048h (7)mov al,a AND (NOT(a-A) ; 41h (8)mov al,H OR 00100000b; 68h (9)mov ax,(76543 LT 32768) XOR 7654h; 7654h3.12

18、; 假设block开场的数据块有32个字节数据:16个正数+100 (64h),16个负数 -48 0doh 分别连续分布: block db 16 dup100,16 dup-48 ;也可以是任意字节数据,随意分布。 dplus db 32 dup(?);为正数预留存储空间 dminus db 32 dup(?);为负数预留存储空间 count equ 32;字节数3.15; mydataseg segment my1b db Personal puter my2b db 20 my3b db 14h ;20h my4b db 00010100b my5w dw 20 dup(?) my6c

19、 equ 100 ;my6c = 100 my7c equ mydataseg ends3.18; 段地址:表示标号所在代码段的段地址; 偏移地址:表示标号所在代码段的段内偏移地址; 类型:引用该标号时,表示它所在同一个段near类型,还是另外一个段far类型。3.19; mydata segment ORG lO0h VARW DW l234H,5678H VARB DB 3,4 AGLIN 4 VARD DD 12345678H EVEN BUFF DB 10 DUP(?) MESS DB HELLO MOV AX, OFFSET VARB + OFFSET MESS;AX = 4+16H

20、 = 1AH MOV AX, TYFE TYPE BUFF+TYPE MESS+TYPE VARD;AX = 1+1+4 = 06H MOV AX,SIZE VARW+SIZE BUFF+SIZE MESS;AX = 4+10+5 = 19 = 13H MOV AX,LENGTH VARW + LENGTH VARD;AX = 2+1 = 03H MOV AX,LENGTH BUFF + SIZE VARW;AX = 10+4 =14 = 0EH MOV AX,TYPE BIGIN;AX = FF02H (近 MOV AX,OFFSET BEGIN;AX = 1BH3.22; 段定义伪指令段名

21、定位组合类别组名 .CODE _TEXT WORD PUBLIC CODE.DATA _DATA WORD PUBLIC DATA DGROUP .STACK STACKPARA STACK STACK DGROUP 3.25; .model small .stack .data num equ 5 datalist dw -1,0,2,5,4,? .code .startup mov bx,offset datalist mov cx,num xor ax,ax again: add ax,bx inc bx inc bx loop again mov bx,ax .exit 0 end3.

22、26; stack segment para stackdw 512 dup(?) stack ends data segment dword array db 100 dup(?) data ends code segment code assume cs:code,ds:data,es:data,ss:stack org 100h start: mov ax,data mov ds,ax mov es,ax mov di,offset array mov al,64h mov cx,100 cld rep stosb mov ax,4c00h int 21h code ends end s

23、tart3.27;解答;xt327.asm .model small .stack 256;定义堆栈段大小为256个字节 .data anum dd 11223344h;定义两个双字的数随意 bnum dd 77553311h sum dd ?;定义结果,执行后为:88776655h .code .startup xor si, si;相对于变量的位移量清零 mov cx, 2;分上下字分别相加,共两次 clc;清零cf again:mov ax, anumsi;取第一个数的一个字先低字后高字 adc ax, bnumsi;取第二个数的一个字先低字后高字 mov sumsi, ax;存和的一个

24、字先低字后高字 inc si;修改位移量指向下一个字加2 inc si loop again;cx=cx-1 ,if cx0 ,jump again .exit 0 end 3.28; .startup xor si, si;位移量清零 mov al, bdatasi;取第一个数 mov cx, num-1;累加次数 again: inc si;指向下一个数 adc al, bdatasi;累加 loop again;如未完,继续累加 mov sum, al;完了,存结果 .exit 0 end4.3; 思路:设这四组从低位到高位分别放在AL、BL、CL和DL存放器中。这里仅列出代码段: mo

25、v bl, al;将al中的两组分开 and al, 0fh;屏蔽高四位后送al mov cl, 4;原al中的数据逻辑右移4次送bl shr bl, cl mov dl, ah;将ah中的两组分开 and dl, 0f0h;屏蔽低高四位后送dl mov cl, 4;原ah中的数据逻辑右移4次送dl shr dl, cl mov cl, ah;屏蔽高四位后送cl and cl, 0fh4.4; getkey: mov ah, 1;从键盘输入,出口:al存键值 int 21h cmp al, a;判键值是小写字母? getkay cmp al, z ja getkay sub al,20h;是小写字母转换为大写字母 mov ah, 09h;显示 int 21h4.8; 1 将jmp tablebx指令改为:mov dx, tablebx2 去掉源程序中:.exit 0-end之间的语句4.17; .

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服