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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(微机原理与接口技术课后习题答案郭兰英文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理与接口技术课后习题答案郭兰英文档格式.docx

1、(1) (2)(3) 原码 反码 补码+37 00100101/25H 00100101/25H 00100101/25H-37 /A5H /DAH /DBH +37 -3716位 32位00 25H00 00 00 25HFF 5BHFF FF FF 5BH 无符号数:70D 补码有符号数: BCD码:46D ASCII:F 1)、相加后假设显现和大于9,那么将和减去10后再向高位进1 2)、假设显现组间进位,那么将低位加6 详见讲义16页。 C3 40 20 005050H十进制值80二进制十六进制0011 0010B32H0101 0000B D:44H d:64H CR:0DH LF:

2、0AH 0:30H SP:20H NUL:00H 国标码:36 50H 机内码:B6 B0H第3章 (1)完整的汇编语言源程序由段组成 (2)一个汇编语言源程序能够包括假设干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列 (3)需独立运行的程序必需包括一个代码段,并指示程序执行的起始点,一个程序只有一个起始点 (4)所有的可执行性语句必需位于某一个代码段内,说明性语句可依照需要位于任一段内 (5)通常,程序还需要一个堆栈段存储模式特 点TINYCOM类型程序,只有一个小于64KB的逻辑段(MASM 支持)SMALL小应用程序,只有一个代码段和一个数据段(含堆栈段),每段不大于64

3、KBCOMPACT代码少、数据多的程序,只有一个代码段,但有多个数据段MEDIUM代码多、数据少的程序,可有多个代码段,只有一个数据段LARGE大应用程序,可有多个代码段和多个数据段(静态数据小于64KB)HUGE更大应用程序,可有多个代码段和多个数据段(对静态数据没有限制)FLAT32位应用程序,运行在32位80x86CPU和Windows 9x或NT环境 开始位置:用标号指明 返回DOS:利用DOS功能挪用的4CH子功能来实现 汇编停止:执行到一条END伪指令时,停止汇编 段定位、段组合和段类型。 stack segment stack db 1024(0) stack ends data

4、 segment string db Hello,Assembly!,0dH,0aH,$ data ends code segment code assume cs:code,ds:data,ss:stack start: mov dx,offset string mov ah,9 int 21h code ends end start(1). EXE程序 程序能够有多个代码段和多个数据段,程序长度能够超过64KB 通常生成EXE结构的可执行程序(2). COM程序 只有一个逻辑段,程序长度不超过64KB 需要知足必然条件才能生成COM结构的可执行程序(MASM 需要采纳TINY模式) 符号概

5、念伪指令有“等价EQU”和“等号”: 符号名 EQU 数值表达式 符号名 EQU 符号名 数值表达式 EQU用于数值等价时不能重复概念符号名,但“”许诺有重复赋值。例如: X= 7 ;等效于:X equ 7 X= X+5 ;“X EQU X+5”是错误的 (1) al=67h (2) ax=133h,dx=4h (3) ax=0230h (4) al=41h (4) ax=7654h (1)41h42h43h1010h45h46h-1?4?00h0fbh0ffh.data my1b db Personal Computer my2b db 20 my3b db 14h my4b db 0001

6、0100b my5w dw 20 dup(?) my6c = 100 my7c = 利用定位伪指令操纵,如org,even,align 包括逻辑地址和类型两种属性。 ;数据段 org 100h varw dw 1234h , 5678h varb db 3 , 4 vard dd h buff dd 10 dup(? mess db Hello代码段 mov ax , offset varb + offset mess mov ax , type buff + type mess + type vard mov ax , sizeof varw+ sizeof buff+ sizeof mes

7、s mov ax , lengthof varw+ lengthof vard (1) 1000超过一个字节所能表达的最大整数 (2)SI应为偶数 (3)两个内存单元不能直接运算 (4)应改成al+1 (5)条件转移指令后面应接标号,而不是变量 mov ah,1 ;只允许输入小写字母 int 21h sub al,20h ;转换为大写字母 mov dl,al mov ah,2 int 21h ;显示 mov bx,offset LEDtable mov al,lednum xlat mov ax, bufX cmp ax, bufY jae done mov ax, bufYdone: mov

8、 bufZ, ax .model small .stack .databufX dw -7signX db ? .code .startup cmp bufX,0 ;test bufX,80h jl next ;jnz next mov signX,0 jmp donenext: mov signX,-1 .exit 0 end mov dl,2 mov ax,bufX cmp ax,bufY je next1 dec dlnext1: cmp ax,bufZ je next2next2: ; mov al,number mov bx,0 ;BX记录为1的位数restart: cmp al,0

9、 ;AL0结束 jz doneagain: shr al,1 ;最低位右移进入CF jc next ;为1,转移 inc bx ;不为1,继续 jmp again push ax push bx shl bx,1 ;位数乘以2(偏移地址要用2个字节单元) jmp addrsbx ;间接转移:IPtableBX以下是各个处置程序段fun0: mov dl,0 jmp dispfun1:1fun2:2fun3:3fun4:4fun5:5fun6:6fun7:7disp: mov ah,2 ;显示一个字符 pop bx pop ax jmp restart 编制程序完成12H、45H、0F3H、6A

10、H、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存入字节变量SUM中(不考虑溢出和进位)。;b_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据num equ 10 ;数据个数sum db ?预留结果单元 xor si, si ;位移量清零 xor al, al ;取第一个数 mov cx, num ;累加次数 add al, b_datasi ;累加 inc si ;指向下一个数 loop again ;如未完,继续累加 mov sum, al ;完了,存结果 求主存0040h:0开始的一个6

11、4KB物理段中共有多少个空格?;start: mov ax,0040h ;送段地址 mov ds, ax mov si, 0 ;偏移地址 mov cx, si ;计数(循环次数) xor ax, ax ;空格计数器清零 cmp byte ptr si, 20h ;与空格的ASCII码比较 jne next ;不是空格,转 inc ax ;是空格,空格数加1修改地址指针cxcx1,如cx0 退出循环 end start 编写计算100个16位正整数之和的程序。若是和不超过16位字的范围(65535),那么保留其和到wordsum,如超过那么显示overflow。答:count equ 100pa

12、rray dw count dup(?) ;假设有100个数据wordsum dw 0msg db overflow,$ mov cx,count mov ax,0 mov bx,offset parray add ax,bx jnc next mov dx,offset msg mov ah,9显示溢出信息 jmp done ;然后,跳出循环体 add bx,2 loop again mov wordsum,ax 编程把个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数。转换算法能够是:用二进制数除以10000,商为“万位”,再用余数除以1000,取得“千位”;依次用余数除以

13、l00、10和l,取得“百位”、“十位”和“个位”。 .model 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 ;目的数据高位位移量 mov ax, dx ;中存放被除数 mov dx, 0 div bx ;除于bx,商ax,余数dx mov dbcdsi, al ;商10,存结果 push dx ;暂存余数 mov ax, bx ;除数

14、除于10 mov dx,0 div cx ;除于cx,商ax、余数0存在dx mov bx, ax ;bx是除数 pop dx dec si ;目的数据位移量减1 jnz again mov dbcd, dl ;存个位数( 10 ) (1)汇编语言中,子程序要用一对进程伪指令PROC和ENDP声明,格式如下: 进程名 PROC NEAR|FAR ;进程体 进程名 ENDP (2)爱惜用到的寄放器内容,以便子程序返回时进行相应的恢复。 (3)改错: crazy proc pish bx push cx xor ax,ax xor dx,dx again:add a,bx adc dx,0 inc

15、 bx loop again pop cx pop bx 解(不需挪用HTOASC子程序): mov ah,1 cmp al,1bh ;ESC的ASCII码是1bh je done是大写字母则转换为小写字母 解答:asctob proc push cx and dh,0fh ;先转换十位数 shl dh,1 ;十位数乘以10(采用移位指令) mov ch,dh shl dh,1 add dh,ch and dl,0fh ;转换个位数 add dh,dl ;十位数加个位数 mov al,dh ;设置出口参数 pop cx retasctob endpDIPASC proc ;入口参数:AL要显示

16、的一个16进制数 push dx mov cl,4 ;转换高位 shr al,cl call HTOASC mov dl,al ; pop ax ;转换低位 mov dl,H ;显示一个字母“H”DIPASC endpHTOASC proc ;将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码HTOASC endplucase proc mov bx,offset s

17、tring cmp al,0 je case0 cmp al,1 jz case1 cmp al,2 jz case2case0: cmp byte ptr bx,0 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,a jb next1 cmp byte ptr bx,z ja next1 sub byte ptr bx,20h jmp case1case2: jb next2 ja next20 jmp

18、next2next20: ja next2 jmp case2lucase endp (1)用寄放器传递参数: 最简单和经常使用的参数传递方式是通过寄放器,只要把参数存于约定的寄放器中就能够够了 由于通用寄放器个数有限,这种方式对少量数据能够直接传递数值,而对大量数据只能传递地址 采纳寄放器传递参数,注意带有出口参数的寄放器不能爱惜和恢复,带有入口参数的寄放器能够爱惜、也能够不爱惜,但最好能够维持一致 (2)用共享变量传递参数 子程序和主程序利用同一个变量名存取数据确实是利用共享变量(全局变量)进行参数传递 若是变量概念和利用不在同一个源程序中,需要利用PUBLIC、EXTREN声明 若是主程

19、序还要利用原先的变量值,那么需要爱惜和恢复 利用共享变量传递参数,子程序的通用性较差,但专门适合在多个程序段间、尤其在不同的程序模块间传递数据 (3)用堆栈传递参数 参数传递还能够通过堆栈那个临时存储区。主程序将入口参数压入堆栈,子程序从堆栈中掏出参数;子程序将出口参数压入堆栈,主程序弹出堆栈取得它们 采纳堆栈传递参数是程式化的,它是编译程序处置参数传递、和汇编语言与高级语言混合编程时的常规方式 方式: 注意:压栈与弹栈必需要一一对应。方式1:neg32 proc ;32位有符号数 neg ax ;实现0功能 neg dx sbb dx,0 ;这条指令也可以用dec dx代替neg32 end

20、p ;出口参数:32位有符号数的补码方式2: not ax ;实现求反加1 not dx add ax,1 adc dx,0array db 12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h ;数组count equ $-array ;数组元素个数result db ?校验和 mov bx,offset array ;BX数组的偏移地址 mov cx,count ;CX数组的元素个数 call checksum ;挪用求和进程 mov result,al ;处置出口参数 mov ax,4c00h计算字节校验和的通用进程DS:BX数组的段地址:偏移地址,CX元素个数AL校验和说明:除AX/BX/CX外,不阻碍其他寄放器checksum proc xor al,al ;累加器清0sum: add al,bx ;求和指向下一个字节 loop sumchecksum endpwdata dw 34abh mov ax,wdata call dispa

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1