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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

《汇编语言与接口技术》习题解答第三章.docx

1、汇编语言与接口技术习题解答第三章3.16 解: mov ah,1 ;只允许输入小写字母 int 21h sub al,20h ;转换为大写字母 mov dl,al mov ah,2 int 21h ;显示3.18 解: mov ax, bufX cmp ax, bufY jge done mov ax, bufYdone: mov bufZ, ax3.19 解: .model small .stack .databufX dw -7signX db ? .code .startup cmp bufX,0 ;test bufX,80hjl next ;jnz next mov signX,0 j

2、mp donenext: mov signX,-1done: .exit 0 end3.20 解: mov dl,2 mov ax,bufX cmp ax,bufY je next1 dec dlnext1: cmp ax,bufZ je next2 dec dlnext2: mov ah,2 int 21h3.22 编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存入字节变量SUM中(不考虑溢出和进位)。;wjxt322.asm .model small .stack .datab_data db 12h,45h,

3、0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据num equ 10 ;数据个数sum db ? ;预留结果单元 .code .startup xor si, si ;位移量清零 xor al, al ;取第一个数 mov cx, num ;累加次数again: add al, b_datasi ;累加 inc si ;指向下一个数 loop again ;如未完,继续累加 mov sum, al ;完了,存结果 .exit 0 end3.30 解:lucase proc push bx mov bx,offset string cmp al,0 je case

4、0 cmp al,1 jz case1 cmp al,2 jz case2 jmp donecase0: cmp byte ptr bx,0 je done cmp byte ptr bx,A jb next0 cmp byte ptr bx,Z ja next0 add byte ptr bx,20hnext0: inc bx jmp case0case1: cmp byte ptr bx,0 je done cmp byte ptr bx,a jb next1 cmp byte ptr bx,z ja next1 sub byte ptr bx,20hnext1: inc bx jmp c

5、ase1case2: cmp byte ptr bx,0 je done cmp byte ptr bx,A jb next2 cmp byte ptr bx,Z ja next20 add byte ptr bx,20h jmp next2next20: cmp byte ptr bx,a jb next2 cmp byte ptr bx,z ja next2 sub byte ptr bx,20hnext2: inc bx jmp case2done: pop bx retlucase endp习题3.1解答:参考教材(第60页)习题3.6问题:给出你采用一个源程序格式书写的例题3.1源程

6、序解答: .model small .stack .datastring db Hello, Assembly !,0dh,0ah,$ .code start: mov ax,data mov ds,ax mov dx,offset string mov ah,9 int 21h mov ax,4c00h int 21h end start习题3.12解答:ORG伪指令习题3.13解答:段地址和偏移地址属性,类型属性习题3.26问题:过程定义的一般格式是怎样的?子程序开始为什么常有PUSH指令、返回前为什么常有POP指令?下面完成16位无符号数累加的子程序有什么不妥吗?若有,请改正:解答:cr

7、azy PROC ;crazy PROC push ax ; xor ax,ax ; xor ax,ax xor dx,dx ; xor dx,dxagain: add ax,bx ;again: add ax,bx adc dx,0 ; adc dx,0 inc bx ; inc bx inc bx ; inc bx loop again ; loop again ret ; ret ENDP crazy ; crazy ENDP字量求和子程序入口参数:BX数据首址CX数据个数出口参数:AX和的低字DX和的高字(进位部分)习题3.28问题:请按如下说明编写子程序:;子程序功能:把用ASCII

8、码表示的两位十进制数转换为对应二进制数;入口参数:DH十位数的ASCII码,DL个位数的ASCII码;出口参数:AL对应的二进制数解答:asctob proc push cx ;先转换十位数 and dh,0fh shl dh,1 ;乘以10 mov ch,dh shl dh,1 shl dh,1 add dh,ch;转换个位数 and dl,0fh ;十位数加个位数 add dh,dl ;设置出口参数 mov al,dh pop cx retasctob endp习题3.341问题:编写一个计算字节校验和的子程序。所谓“校验和”是指不记进位的累加,常用于检查信息的正确性。主程序提供入口参数,

9、有数据个数和数据缓冲区的首地址。子程序回送求和结果这个出口参数。传递参数方法自定。解答:;数据段array db 12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90hcount equ $-array ;数组元素个数result db ? ;校验和 ;代码段(主程序) mov bx,offset array ;BX数组的偏移地址 mov cx,count ;CX数组的元素个数 call checksum ;调用求和过程 mov result,al ;处理出口参数习题3.342;代码段(子程序);计算字节校验和的通用过程;入口参数:DS:BX数组的段地址:偏移地址

10、CX元素个数;出口参数:AL校验和;说明:除AX/BX/CX外,不影响其他寄存器checksum proc xor al,al ;累加器清0sum: add al,bx ;求和 inc bx ;指向下一个字节 loop sum retchecksum endp习题3.17已知用于LED数码管的显示代码表为:LEDtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0c1h,86h,8eh它依次表示09、AF这16个数码的显示代码。现编写一个程序实现将lednum中的一个数字(09、AF)转换成对应的LED显

11、示代码。解答 ;数据段LEDtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0clh,86h,8ehlednum db 0ah ; 代码段 mov bx, offset LEDtable mov al, lednum xlat ;al中存有对应的LED显示代码习题3.21例题3.7中,如果要实现所有为1的位都顺序执行相应的处理程序段(而不是例题中仅执行最低为1位的处理程序段),请写出修改后的代码段。解答;代码段 mov al,number mov bx,0 ;BX记录为1的位数restart: cmp

12、al,0 ;AL0结束 jz doneagain: shr al,1 ;最低位右移进入CF jc next ;为1,转移 inc bx ;不为1,继续 jmp againnext: push ax push bx shl bx,1 ;位数乘以2(偏移地址要用2个字节单元) jmp addrsbx ;间接转移:IPtableBX ;以下是各个处理程序段fun0: mov dl,0 jmp dispfun1: mov dl,1 jmp dispfun2: mov dl,2 jmp dispfun3: mov dl,3 jmp dispfun4: mov dl,4 jmp dispfun5: mov

13、 dl,5 jmp dispfun6: mov dl,6 jmp dispfun7: mov dl,7 jmp dispdisp: mov ah,2 ;显示一个字符 int 21h pop bx pop ax jmp restartdone: 习题3.24编写计算100个正整数之和的程序。如果和不超过16位字的围(65535),则保存其和到wordsum,如超过则显示Overflow !。解答 ;数据段count equ 100parray dw count dup(?) ;假设有100个数据wordsum dw 0msg db overflow,$ ;代码段 mov cx,count mov

14、 ax,0 mov bx,offset parrayagain: add ax,bx jnc next mov dx,offset msg mov ah,9 int 21h ;显示溢出信息 jmp done ;然后,跳出循环体next: add bx,2 loop again mov wordsum,axdone: 习题3.25编程把一个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数。转换算法可以是:用二进制数除以10000,商为“万位”,再用余数除以1000,得到“千位”;依次用余数除以100、10和1,得到“百位”、“十位”和“个位”。解答 ;wjxt325.asm .m

15、odel small .stack 256 .data array dw ? ;源字数据 dbcd db 5 dup(?) ;五位bcd结果,高对高低对低 .code .startup mov dx, array ;取源数据(余数) mov bx, 10000 ;除数 mov cx, 10 ;除数系数 mov si, 4 ;目的数据高位位移量 again: mov ax, dx ;dx.ax中存放被除数 mov dx, 0 div bx ;除于bx,商ax,余数dx mov dbcdsi, al ;商10,存结果 push dx ;暂存余数 mov ax, bx ;除数除于10 mov dx,

16、0 div cx ;dx.ax除于cx,商ax、余数0存在dx mov bx, ax ;bx是除数 pop dx dec si ;目的数据位移量减1 jnz again mov dbcd, dl ;存个位数( 10 ) .exit 0 end习题3.27编写一个源程序,在键盘上按一个键,将从AL返回的ASCII码值显示出来,如果按下ESC键则程序退出。请调用书中的HTOASC子程序。解答again: mov ah,1 int 21h cmp al,1bh ;ESC的ASCII码是1bh je done call htoasc mov ah,2 int 21h jmp againdone: 习题

17、3.29调用HTOASC子程序,编写显示一个字节的16进制数、后跟“H”的子程序。解答DIPASC proc ;入口参数:AL要显示的一个16进制数 push cx push dx push ax mov cl,4 ;转换高位 shr al,cl call HTOASC mov dl,al ;显示 mov ah,2 int 21h pop ax ;转换低位 call HTOASC mov dl,al ;显示 mov ah,2 int 21h mov dl,H ;显示一个字母“H” mov ah,2 int 21h pop dx pop cx retDIPASC endpHTOASC proc

18、;将AL低4位表达的一位16进制数转换为ASCII码 and al,0fh cmp al,9 jbe htoasc1 add al,37h ;是0AH0FH,加37H转换为ASCII码 ret ;子程序返回htoasc1: add al,30h ;是09,加30H转换为ASCII码 ret ;子程序返回HTOASC endp习题3.35编制3个子程序把一个16位二进制数用4位16进制形式在屏幕上显示出来,分别运用如下3种参数传递方法,并配合3个主程序验证它。 采用AX寄存器传递这个16位二进制数 采用temp变量传递这个16位二进制数 采用堆栈方法传递这个16位二进制数解答 .model sm

19、all .stack .datawdata dw 34abh .code .startup mov ax,wdata call dispa .exit 0 ;dispa proc push cx push dx mov cl,4 mov dl,ah shr dl,cl call dldisp mov dl,ah and dl,0fh call dldisp mov dl,al shr dl,cl call dldisp mov dl,al and dl,0fh call dldisp pop dx pop cx retdispa endp ;dldisp proc push ax or dl,

20、30h cmp dl,39h jbe dldisp1 add dl,7dldisp1: mov ah,2 int 21h pop ax retdldisp endp end .model small .stack .datawdata dw 34abhwordtemp dw ? .code .startup mov ax,wdata mov wordtemp,ax call dispa .exit 0 ;dispa proc push cx push dx mov cl,4 mov dl,byte ptr wordtemp+1 shr dl,cl call dldisp mov dl,byte

21、 ptr wordtemp+1 and dl,0fh call dldisp mov dl,byte ptr wordtemp shr dl,cl call dldisp mov dl,byte ptr wordtemp and dl,0fh call dldisp pop dx pop cx retdispa endp ;dldisp proc push ax or dl,30h cmp dl,39h jbe dldisp1 add dl,7dldisp1: mov ah,2 int 21h pop ax retdldisp endp end .model small .stack .dat

22、awdata dw 34abh .code .startup push wdata call dispa pop ax ;add sp,2 .exit 0 ;dispa proc push bp mov bp,sp push ax push cx push dx mov ax,bp+4 mov cl,4 mov dl,ah shr dl,cl call dldisp mov dl,ah and dl,0fh call dldisp mov dl,al shr dl,cl call dldisp mov dl,al and dl,0fh call dldisp pop dx pop cx pop ax pop bp retdispa endp ;dldisp proc push ax or dl,30h cmp dl,39h jbe dldisp1 add dl,7dldisp1: mov ah,2 int 21h pop ax retdldisp endp end

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

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