1632位微机原理、汇编语言及接口技术(第二版)第三章课后习题答案.docx
《1632位微机原理、汇编语言及接口技术(第二版)第三章课后习题答案.docx》由会员分享,可在线阅读,更多相关《1632位微机原理、汇编语言及接口技术(第二版)第三章课后习题答案.docx(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、16o 32位微机原理、汇编语言及接口技术(第二版)第三章课后习题答案。3.1: 汇编语言有什么特点解:汇编语言是一种以处理器指令系统为基础的低级程序设计 语言,它采用助记符表达指令操作码,采用标识符号表示指 令操作数,可以直接、有效地控制计算机硬件,因而容易创 建代码序列短小、运行快速的可执行程序2编写汇编语言源程序时,一般的组成原则是什么?解:(1)完整的汇编语言源程序由段组成(2) 一个汇编语言源程序可以包含若干个代码段、数据 段、附加段或堆栈段,段与段之间的顺序可随意排列(3)需独立运行的程序必须包含一个代码段,并指示程 序执行的起始点,一个程序只有一个起始点解:利用定位伪指令控制,如
2、org, even, align3.13名字和符号有什么属性?解:包括逻辑地址和类型两种属性014设在某个程序中有如下片段 请写出每条传送指令执行后寄存器AX的内容:Org 100h dwVarw1234h, 5678hdb3, 4ddVarb12345678h db10dup(?)dbYardhelloBuffMov ax, offset messA4c c cMov ax, type buff+type mess+type vardMov ax, sizeof varw+sizeof buff+sizeof messMov ax, lengthofvarw+lengthof vard解:;
3、数据段org 100hvarwdwl234h , 5678hvarbdb3 , 4vardddl2345678hbuffddlOdup(?)messdb? Hello)代码段mov ax, offsetvarb+ offsetmessmov ax, typebuff+ typemess+ typevard movax, sizeofvarw+ sizeof buff+ sizeof messmov ax, lengthof varw+ lengthof vard解:(1) 1000超过一个字节所能表达的最大整数SI应为偶数(3)两个内存单元不能直接运算(4)应改为al+1(5)条件转移指令后面
4、应接标号,而不是变3. 16编写一个程序,把从键盘输入的一个小写 字母用大 写字母显示出来解:mov ah, 1 ;只允许输入小写字母int 21hsub al, 20h转换为大写字母mov dl, al movah, 2 int 21h ;显示3. 17已知用于LED数码管的显示代码表为:LEDtabledbOcOh, 0f9h, 0a4h, ObOh, 99h, 92h, 82h, 0f8hdb80h, 90h, 88h, 83h, 0c6h, Oclh, 86h, 8eh它依次表示09, AF这16个数码的显示 代码。现编与一个程序实现将lednum中的一个数字(09, af )转换成对
5、应的LED显示代码解:mov bx, offset LEDtable mov al, lednum xlat3. 18编制一个程序,把变量bufX和bufY中较大者 存入bufZ;若两者相等 则把其中之一存入bufZ中。 假设变量存放的是8位有符号数。解:mov ax, bufX cmp ax, bufY jae donemov ax, bufY done: mov bufZ, ax3. 19为有符号16位数,请将它们的符号状态 保存 在signX,即:如果变量值大于等于0,保 存0;如果 X小于0,保存T。编写该程序。设变量bufX解:, model small . stack. datab
6、ufXdw -7signXdb ?.code.startupcmp bufX, 0;test bufX, 80hjl next ;jnz next mov signX, 0imn done next:done:mov signX, -1 . exit 0 end3. 20bufX、bufY和bufZ是3个有符号16进制 数, 编写一个比较相等关系的程序(1)如果这3个数都不相等,则显示0(2)如果这三个数中有两个数相等,则显示1(3)如果这三个数都相等,则显示2解:mov dl, mov ax, bufX cmp ax, bufY je nextl dec dl nextl:cmp ax, b
7、ufZ je next2dec dlnext2: mov ah, 2 int 21h3. 21例3. 7中,如果要实现所有为1的位都顺序 执行相应的处理程序段(而不是例题中仅执 行最低 为1位的处理程序段),请写出修改后的代码段?解::代码段mov al, numbermov bx, 0 ; BX_记录为1的位数restart:cmp al, 0 ;AL=O 结束jz doneagain: shr al, 1 ;最低位右移进入CFjc next ;为1,转移inc bx ;不为1,继续jmp againnext: push axpush bxShi bx, 1 ;位数乘以2 (偏移地址要用2个
8、字节单元)jmp addrs bx:间接转移:IP table+BX;以下是各个处理程序段fund:movdl,funl:movdl,fun2:movdl,fun3:movdl,fun4:movdl,fun5:movdl,1fun6:movdl,1fun7: mov dl, 0, jmp disp, r jmp disp 2, jmp disp3 jmp disp 4, jmp disp5 jmp disp6 jmp disp 7, jmp dispdisp:mov ah, 2 ;显示一个字符 int 21hpop bxpop axjmp restartdone:3. 22 编制程序完成 12
9、H、45H、0F3H、6AH、20H、 OFEH、90H、0C8H、57H 和 34H 等 10 个字节数据之和,并将结果存入字节变量SUM中(不 考虑溢出和进位)。;wjxt322. asm model small. stack . datab_data db12h, 45h, Of3h, 6ah, 20h, Ofeh, 90h, 0c8h, 57h,3 4hequ 10 ;数据个数db ?;预口皿留结果单元.codesum startupxor si, xor al, mov ex, again: add al, inc si累加loopsi;位移量清al零;取第一个num数;累加次数b_
10、datasi;指向下一个数;如未完,继续累加;完了,存结果againmov sum, al . exit 0 end3. 23求主存0040h: 0开始的一个64KB物理 段 中共有多少个空格?(4)所有的可执行性语句必须位于某一个代码段内,说 明性语句可根据需要位于任一段内(5)通常,程序还需要一个堆栈段3. 3 MODEL伪指令是简化段定义源程序格式中必;wjxt323. asm model small. codestart: mov. codestart: movmovmovmovxor again: emp ASCII码比较ax, ds, si, ex, ax, ptr0040h ;送
11、段地址axo ;偏移地址siax;计数(循环次数);空格计数器清零bytesi, 20h;与空格的next: inc si loop again出循环. exitjne next ; 不是空格,转 inc ax:是空格,空格数加1 ;修改地址指针;cx=cx 一 1,如 cx=0 退end start3. 24编写计算100个16位正整数之和的程序。如 果和不超过16位字的范围(65535),则 保存其和到 wordsum,如超过则显示overflow, 答:;数据段count equ 100 parray dwcount dup (?) wordsumdw ;假设有 10。个数据 msg d
12、b overflow,;代码段mov ex, countmov ax, 0again:mov bx, offset parrayadd 柒,bx_jnc next mov dx, offset msg mov ah, 9 int 21h ;显示溢出信息jmp done ;然后,跳出循环体next:add bx, 2loop againmov wordsum, ax done: 325编程把一个16位无符号二进制数转换 成为用8421BCD码表示的5位十进制数。转换 算法 可以是:用二进制数除以10000,商为“万位”,再 用余数除以io。,得到“千位”;依次 用余数除以 100、10和1,得到
13、“百位”、“十位”和“个位”。;wjxt325. asm.model small.stack 256 .dataarray dw ?dbcd低对低db 5 dup (?);五位bed结果,高对高code.startup movmov d0rray ;取源数据(余数)mov bW0000 ;除数mov。乐3 ;除数系数movS1,again:ax,4;目的数据高位位移量dx ; dx. ax中存放被除数mov ax, mov dx, div exdx, 0 bx ; 除于bx,商ax,余数dx dbcd si, al ;商10,存结果push dx ;暂存余数bx ;除数除于100;dx. ax
14、除于ex,商ax、余数。存在dx mov pop dec jnzbx ax ; bx是除数 dxsi ;目的数据位移量减1 againmov dbcd, dl ;存个位数(10 ) . exit 0 end3. 26过程定义的一般格式是怎样的?子程序开始为 什么常有PUSH指令?返回钱为什么常有POP指令? 下面完成16位无符号数累加的子程 序有什么不妥吗?若 有 ,请 改 正。CarzyPROCPush axXor ax, ax Xor ax, dxAgainadd ax, bx Adc dx, 0 Inc bx Inc bx Loop again Ret ENDP crazy解:(1)汇编
15、语言中,子程序要用一对过程伪指 令 PROC和ENDP声明,格式如下:过程名 PROC NEAR | FAR;过程体过程名ENDP(2)保护用到的寄存器内容,以便子程序返 回时进行相应的恢复。(3)改错:crazy procpishbxpushexxor ax, ax xor dx, dx again:add a, bx adc dx, 0 inc bx inc bx loopagainpop expop bx3. 27编写一个源程序,在键盘上按一个键,将从AL 返回的ASCII码值显示出来,如果按下ESC键则程序 退出。解(不需调用HTOASC子程序):again: mov ah, 1 in
16、t 21h emp al, Ibh je doneESC 的 ASCII 码是 Ibhmov dl, al mov ah, 2 int 21h ;指 令);转换个位数十位数加个位数是大写字母则转换为小写字母jmp againdone: 3. 28请按如下说明编写子程序:;子程序功能:把用Ascn码表示的两位 十进制数转换为对应二进制数;人口参数:DH=+位数的ASCII码,DL=f 位数的ASCH码;出口参数:此二对应的二进制数解答: asctob procpush exand dh, Ofh ;先转换十位数shl dh,l:十位数乘以10 (采用移位mov ch, dh shl dh, 1
17、shl dh, 1 add dh, ch and dl, Ofh add dh,mov al, dh ;设置出口参数 pop ex retasetob endp3. 29调用HTOASC子程序,显示个字节的16进制 后跟 的子程序。解:DIPASC proc ;入口 参数:处二要显示的一个16进制数push expush dx push ax mov cl,转换高位shr al, cl call HTOASCmov dl, al ;显示 mov ah, 2 int 21hpop ax转换低位call HTOASC mov dl, al :显示 mov ah, 2 int 21hmov dl,
18、H;显示一个字母“H”mov ah, 2 int 21h pop dx pop ex retDIPASC endpHTOASC proc ;将AL低4位表达的一位16进制数转 换为ASCIIand al, Ofhemp al, 9jbe htoascladd al, 37h ;是。仙OFH,加37H转 换 为ASCII码ret :子程序返回htoascl:add al, 30h;是 09,加30H转换为ASCII码ret;子程序返回HTOASC endp 3. 30写一个子程序根据人口参数ALR、 1、2, 依次实现对大写字母转换成小写、小写转换成大写 或大小字母互换。欲转换的字符串在stri
19、ng中,用 0表示结束解:lucaseprocpush bxmov bx, offset string cmp al, 0je caseO cmp al, 1 jz easel cmp al, 2 jz case2 jmp donecaseO:cmpje done cmp byte ptr nextO cmp byte ptr ja nextO add byte ptr jmp caseOeasel:cmpje done cmp byte ptr nextl cmp byte ptr ja nextl sub byte ptr nextl:incjmp easelcase2:empbyte p
20、tr bx, 0bx, A jbbx, Vbx, 20h nextO: inc bxbyte ptr bx,0bx, a jbbx, zbx, 20h bxbyte ptr bx, 0bx, Aje done emp byte ptrjb next2emp byte ptr bx, Vja next20add byte ptr bx, 20hjmp next2next20:emp byte ptr bx, a/jb next2emp byte ptr bx, zja next2sub byte ptr bx,20hnext2:inc bxjmp case2done: pop bxretluca
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 16 32 微机 原理 汇编语言 接口 技术 第二 第三 课后 习题 答案
限制150内