汇编语言程序设计(钱晓捷)课后答案.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《汇编语言程序设计(钱晓捷)课后答案.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计(钱晓捷)课后答案.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、汇编语言程序设计(钱晓捷)课后答案 汇编语言程序设计(第二版) 钱晓捷习题答案 第二章() 2.1 (1)AX1200h (2)AX0100h (3)AX4C2Ah (4)AX3412h (5)AX4C2Ah (6)AX7856h (7)AX65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为 BP (7) 源操作数应为BX+DI (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX200H mov al,8
2、 ;传送欲转换的数字,AL8 xlat ;转换为格雷码,AL12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop bx ;DS:0f79h=8057h 2.6 AL=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=00
3、h 0 1 0 0 1 2.7 W=X+Y+24-Z 2.8 (1)ADD DX,BX (2)ADD AL,BX+SI (3)ADD BX+0B2H,CX (4)ADD WORD PTR 0520H,3412H (5)ADD 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 DI,转到above执行 cmp dx,di ja above ;jnbe above (2)若AX SI,转到gre
4、ater执行 cmp ax,si jg greater ;jnle greater (3)若CX = 0,转到zero执行 cmp cx,0 jcxz zero jz zero (4)若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 jbe below_eq jae below_eq 2.25; 答:将首地址为array得20个字的数组求
5、和,并将结果存入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,buffersi ;第三字节 inc si mov ah,buffersi ;第四
6、字节 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 dx,dx ;和的高字dx=0 mov cx,9
7、9 ;加的次数 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 ;si-0
8、 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: ret 2.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,ax 2.29; 压缩BCD码加法:AXAXBX 出口参数:AXBCD码和 2.34; okms
9、g 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 ! Over
10、flow !?, $? mov dx,errmsg ; 错误2:缺少JMP指令 mov ah,9 int 21h 2.37; ;xt237.asm .model small .stack .data array db 255 db 0 array1 db 255 dup($) array2 db 0dh,0ah,$ .code .startup mov ah,0ah ; 键盘输入字符串 mov dx,offset array int 21h mov dx,offset array2 ; 回车换行 mov ah,09h int 21h mov bx,offset array1 again: mo
11、v al,bx cmp al,$ jz done cmp al,a ; 小于a和大于z的字符不是小写字母 jb next cmp al,z ja next sub al,20h ; 在a和z之间的字符才是小写字母,转换为大写mov bx,al ; 保存到原位置 next: inc bx jmp again done: mov dx,offset array1 mov ah,09h int 21h .exit 0 end 第三章(01) 3.1; 硬指令:每个硬指令就是一个处理器指令,在CPU执行时产生相应功能;伪指令:伪指令并不产生处理器指令,它通常用于辅助汇编程序对源程序进行汇编。 3.2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 钱晓捷 课后 答案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内