2022年汇编语言程序设计第4章【课后答案】 .pdf
![资源得分’ 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)
《2022年汇编语言程序设计第4章【课后答案】 .pdf》由会员分享,可在线阅读,更多相关《2022年汇编语言程序设计第4章【课后答案】 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、- 1 - 汇编语言程序设计第四版【课后习题答案】-囮裑為檤第 4 章 基本汇编语言程序设计习题 4.1例题 4.2 如果要求算术右移8 位,如何修改程序。解答思路:首先由最高位字节向次低位字节传送 次低位字节向最低位字节传送共7 次 ;再判最高位字节符号位,如为0,送 00h 到最高位字节;如为1,送 ffh 到最高位字节。传送可参考例题4.2, 不过应从第一号字节送第零号字节, 最高位字节向次低位字节传送;也可以用循环来完成:.model small .stack 256 .data .code .startup mov cx,7 mov si,1 again: mov al, byte
2、ptr qvarsi mov byte ptr qvarsi-1,al inc si loop again test al,80h jz ezz mov bl,0ffh jmp done ezz: mov bl,0 done: mov byte ptr qvar7,bl .exit 0 end 习题 4.2例题 4.2 如果要求算术左移7 位,如何用移位指令实现。解答思路:可设计外循环体为8 个字节左移一次,方法是:最低位字节算术左移一次,次低位字节至最高位字节依次带CF 位循环左移一次内循环共8 次 ,外循环体控制执行7次即可。.model small .stack 256 .data 精选
3、学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 19 页- 2 - .code .startup mov dx, 7 ;外循环次数mov ax, byte ptr qvar0 ;最低位字节送ax lpp: shl ax, 1 ;最低位字节左移一次,其d7 移入 CF 位mov si, 1 mov cx, 7 ;内循环次数again: rcl byte ptr qvarsi, 1 ;高位字节依次左移P50 inc si loop again dec dx jnz lpp .exit 0 .end 习题 4.3将 AX 寄存器中的16 位数连续
4、4 位分成一组,共4 组,然后把这4 组数分别放在 AL 、 BL 、CL 和 DL 寄存器中。解答思路:设这四组从低位到高位分别放在AL 、BL 、 CL 和 DL 寄存器中。仅列出代码段:mov 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 an
5、d cl, 0fh 习题 4.4编写一个程序,把从键盘输入的一个小写字母用大写字母显示出来。解答getkey: mov ah, 1 ;从键盘输入,出口:al 存键值int 21h cmp al, a ;判键值是小写字母? jb getkay cmp al, z ja getkay sub al,20h ;是小写字母转换为大写字母mov dl,al mov ah, 02h ;显示int 21h 习题 4.5已知用于LED 数码管显示的代码表为:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 19 页- 3 - LEDtable DB 0c
6、0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h DB 80h,90h,88h,83h,0c6h,0c1h,86h,8eh 它依次表示0 9 、A F 这 16 个数码的显示代码。现编写一个程序实现将lednum 中的一个数字 0 9、A F 转换成对应的LED 显示代码。解答.model small .stack 256 .data LEDtable DB 0c0h , 0f9h,0a4h,0b0h,99h,92h ,82h,0f8h DB 80h ,90h,88h,83h,0c6h,0clh、 86h,8eh lednum DB ? .code .startup mov
7、 bx, offset LEDtable mov al, lednum xlat ;al 中存有对应的LED 显示代码 .exit 0 end 习题 4.6编制一个程序,把变量bufX 和 bufY 中较大者存入bufZ ;假设两者相等,则把其中之一存入bufZ 中。假设变量存放的是8 位无符号数。解答.model small .stack 256 .data bufx db ? bufY db ? bufz db ? .code .startup mov al, bufX mov bl, bufY cmp al,bl ja next mov bufZ, bl jmp done next: m
8、ov bufZ, al done: .exit 0 end 习题 4.7设变量bufX 为有符号16 位数,请将它的符号状态保存在signX ,即:如果X大于等于0,保存 0;如果 X 小于 0,保存 -1ffh 。编写该程序。解答.model small 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 19 页- 4 - .stack .data bufX dw -7 signX db ? .code .startup cmp bufX,0 ;test bufX,80h jl next ;jnz next mov signX,0 jm
9、p done next: mov signX,-1 done: .exit 0 end 习题 4.8bufX 、bufY 和 bufZ 是 3 个有符号16 进制数,编写一个比较相等关系的程序:1如果这3 个数都不相等,则显示0;2如果这3 个数中有两个数相等,则显示1;3如果这3 个数都相等,则显示2。解答.model small .stack 256 .data bufx dw ? bufY dw ? bufz dw ? .code .startup mov ax, bufX mov bx, bufY mov cx, bufZ mov dl, 0 cmp ax,bx jnz next1 i
10、nc dl next1: cmp ax,cx jnz next2 inc dl next2: cmp bx,cx jnz next3 inc dl next3: cmp dl, 3jb next4 mov dl, 2next4: mov ah,02h ;显示精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 19 页- 5 - int 21h .exit 0 end 习题 4.9例题 4.8 内外循环次数共是多少?如果要求按从大到小排序,程序如何修改?解答外循环次数是:count-1 次 19 次内循环次数是:count-1)! 次( 19
11、! 次) 内外循环次数共是count-1 + count-1 !次 ,即19+19!次0串操作指令常要利用循环结构,现在不用串操作指令实现字符串string1内容传送到字符串 string2 ,字符长度为count 。解答.model small .stack 256 .data string1 db good morning! len = $-string1 string2 db len dup(?) .code .startup mov cx, len ;字符数mov si, offset string1 ;源指针mov di, offset string2 ;目标指针again: mov
12、 al, si ;送一个字符mov di, al inc si ;修改指针inc di ;修改指针loop again ;cx=cx-1,cx=0 时退出循环.exit 0 end 1不用串操作指令求主存0040h : 0 开始的一个64KB 物理段中共有多少个空格?解答这里仅列出主程序段:mov ax,0040h ;送段地址mov ds, ax xor si, si ;偏移量地址xor cx, cx ;计数循环次数xor dx, dx ;空格计数器清零again: cmp si, 20h ;与空格的ASCII码比较jne next ;不是空格,转inc dx ;是空格,空格数加1 next:
13、 inc si ;修改地址指针loop again ;cx=cx-1, 如 cx=0 退出循环.exit 0 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 19 页- 6 - end 2编程实现把键入的一个字符,用二进制形式0 / 1显示出它的ASCII 代码值。解答.model small .stack 256 .data stri1 db please input,0dh,0ah,$ .code .startup mov dx,offset stri1 mov ah,09h int 21h mov ah, 01h int 21h
14、mov cx, 8 again: xor dl,dl shl al, 1 adc dl, 0 mov ah,02h int 21h loop again .exit 0 end 3编写程序,要求从键盘接收一个数bellN0 9 ,然后响铃bellN 次。解答.model small .stack .data stri1 db please input number:1-9,0dh,0ah,$ .code .startup again: mov dx,offset stri1 ;显示 stri1 ,提示输入mov ah,09h int 21h mov ah,01h ;调用输入一个字符int 21
15、h ;输入一个字符存在al 中cmp al, 1 ;判该字符,如不在 1- 9jb again ;重新输入cmp al, 9 ja again and al,0fh ;在 1- 9,屏蔽高 4 位mov cl, al ;振铃次数送cx xor ch,ch abc: mov dl, 07h ;调用一次振铃精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 19 页- 7 - mov ah, 02h int 21h loop abc .exit 0 end 4 编写程序, 将一个包含有20 个有符号数据的数组arrayM分成两个数组: 正数数组
16、 arrayP和负数数组arrayN ,并分别把这两个数组中的数据个数显示出来。解答 .model small .stack .data arrayM db 1,2,3,4,5,6,0,-3,-5,-6,0,7,6,90,-18,-23,34,7,9,8 ;源数组 arrayP db 20 dup(?) ;正数数组 arrayN db 20 dup(?) ;负数数组 dispP db Plus Number: ,$ dispN db 0dh,0ah,Negs Number: ,$ .code .startup mov cx, 20 ;源数组元素数xor bx, bx ;设 bh 为正数个数,b
17、l 为负数个数,均清零xor si, si ;源数组地址位移量again: ;循环 20 次mov ax, arrayMsi ;取一个元素cmp ax,0 ;判正数jl Neg inc bh ;是,正数个数加1 jmp next Neg: inc bl ;否,负数个数加1 next: inc si ;修改位移量loop again ;循环次数减1 mov ah ,09h ;调用显示字符串功能mov dx, offset dispP ;显示个数int 21h mov al,bh call dispuib ; 调用 I/O 子程序库中的子程序mov ah ,09h ;调用显示字符串功能mov dx
18、, offset dispN ;显示个数 int 21h mov al,bl call dispuib ; 调用 I/O 子程序库中的子程序.exit 0 end 5编写计算100 个正整数之和的程序。如果和不超过16 位字的范围 65535 ,则保存其精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 19 页- 8 - 和到 wordsum ,如超过则显示overflow 。解答.model small .stack .data num equ 100 wlist dw num dup(?) wordsum dw ? error db
19、overflow. $ .code .startup mov bx,offset wlist mov cx,num xor ax,ax again: add ax,bx jc next inc bx inc bx loop again mov bx,ax jmp done next: mov dx,offset error mov ah,9 int 21h done: .exit 0 end 习题 4.16编程判断主存0070h: 0 开始的 1KB 中有无字符串DEBUG。这是一个字符串包含的问题,可以采用逐个向后比较的简单算法。解答.model small .stack .data dis
20、p1 db There is DEBUG in the aera! ,0dh,0ah, $ disp2 db There is no DEBUG in the aera! ,0dh,0ah, $ .code .startup mov ax, 0070h ;送段地址mov ds, ax xor si, si ;地址指针清零mov cx,1024 cmp si, D ;与 D 比较jne next ;不是,转inc si ;是,地址增1 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 19 页- 9 - cmp si, E ;同上jne n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课后答案 2022年汇编语言程序设计第4章【课后答案】 2022 汇编语言 程序设计 课后 答案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内