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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

汇编语言王爽课后答案.docx

1、汇编语言王爽课后答案汇编语言王爽课后答案【篇一:汇编语言课后习题答案 王爽主编】一个值为0的字节,找到后,将它的偏移地址存储在dx中。 assume cs:code code segment start: mov ax,2000h mov ds,ax mov bx,0s: mov ch,0 mov cl,bx jcxz ok;当cx=0时,cs:ip指向okinc bx jmp short s ok: mov dx,bx mov ax ,4c00h int 21h code ends end start 检测点9.3 补全编程,利用loop指令,实现在内存2000h段中查找第一个值为0的字节,

2、找到后,将它的偏移地址存储在dx中。 assume cs:code code segment start: mov ax,2000h mov ds,ax mov bx,0 s:mov cl,bx mov ch,0 inc cx inc bx loop s ok:dec bx mov dx,bx mov ax,4c00h int 21h code ends end start 书p101,执行loop s时,首先要将(cx)减1。 “loop 标号”相当于 dec cx if(cx)0) jmp short 标号 检测点10.1 补全程序,实现从内存1000:0000处开始执行指令。 assum

3、e cs:code stack segment db 16 dup (0) stack ends code segment start: mov ax,stack mov ss,ax mov sp,16 mov ax, 1000hmov ax,0 push ax retf code ends end start 执行reft指令时,相当于进行: pop ip pop cs 根据栈先进后出原则,应先将段地址cs入栈,再将偏移地址ip入栈。 检测点10.3 下面的程序执行后,ax中的数值为多少? 内存地址机器码 汇编指令执行后情况 1000:0 b8 00 00 mov ax,0 ax=0,ip指

4、向1000:3 1000:3 9a 09 00 00 10 call far ptr s pop cs,pop ip,ip指向1000:9 1000:8 40 inc ax 1000:9 58 s:pop ax ax=8h add ax,ax ax=10h pop bx bx=1000h add ax,bx ax=1010h 用debug进行跟踪确认,“call far ptr s”是先将该指令后的第一个字节段地址cs=1000h入栈,再将偏移地址ip=8h入栈,最后转到标号处执行指令。 出栈时,根据栈先进后出的原则,先出的为ip8h,后出的为cs1000h 检测点10.4 下面的程序执行后,

5、ax中的数值为多少? 内存地址机器码 汇编指令 执行后情况 1000:0 b8 06 00mov ax,6 ax=6,ip指向1000:3 1000:3 ff d0call ax pop ip,ip指向1000:6 1000:5 40inc ax 1000:6 58mov bp,spbp=sp=fffeh add ax,bp ax=6+ds:(fffeh)=6+5=0bh 用debug进行跟踪确认,“call ax(16位reg)”是先将该指令后的第一个字节偏移地址ip入栈,再转到偏移地址为ax(16位reg)处执行指令。 检测点10.5 (1)下面的程序执行后,ax中的数值为多少? assu

6、me cs:code stack segment dw 8 dup (0) stack ends code segment start: mov ax,stack mov ss,ax mov sp,16 mov ds,ax mov ax,0 call word ptr ds:0eh inc axinc ax mov ax,4c00h int 21h code ends end start 推算: 执行call word ptr ds:0eh指令时,先cs入栈,再ip=11入栈,最后ip转移到(ds:0eh)。(ds:0eh)=11h,执行inc ax?最终ax=3 题中特别关照别用debug跟

7、踪,跟踪结果不一定正确,但还是忍不住去试试,看是什么结果。 根据单步跟踪发现,执行call word ptr ds:0eh指令时,显示ds:0eh065d。 ds:0000ds:0010不是已设置成stack数据段了嘛,不是应该全都是0的嘛。 于是进行了更详细的单步跟踪,发现初始数据段中数据确实为0,但执行完mov ss,ax;mov sp,16这两条指令后,数据段中数据发生改变。这是为什么呢?中断呗 检测点10.5 (2)下面的程序执行后,ax和bx中的数值为多少? assume cs:codesg stack segment dw 8 dup(0) stack ends codesg se

8、gment start: mov ax,stack mov ss,ax mov sp,10h mov word ptr ss:0,offset s ;(ss:0)=1ah mov ss:2,cs ;(ss:2)=cs call dword ptr ss:0 ;cs入栈,ip=19h入栈,转到cs:1ah处执行指令 ;(ss:4)=cs,(ss:6)=ip nop s: mov ax,offset s ;ax=1ah sub ax,ss:0ch ;ax=1ah-(ss:0ch)=1ah-19h=1 mov bx,cs ;bx=cs0c5bh sub bx,ss:0eh ;bx=cs-cs=0 m

9、ov ax,4c00h int 21h codesg ends end start c:docume1admini1debug jc10-5.exe -u 0c5b:0000 b85a0c mov ax,0c5a 0c5b:0003 8ed0 mov ss,ax 0c5b:0005 bc1000 mov sp,0010 0c5b:0008 36ss: 0c5b:0009 c70600001a00 mov word ptr 0000,001a 0c5b:000f 36ss: 0c5b:0010 8c0e0200mov 0002,cs 0c5b:0014 36ss: 0c5b:0015 ff1e0

10、000call far 0000 0c5b:0019 90nop 0c5b:001a b81a00 mov ax,001a 0c5b:001d 36ss: 0c5b:001e 2b060c00sub ax,000c -u0c5b:0022 8ccb mov bx,cs 0c5b:0024 36ss: 0c5b:0025 2b1e0e00sub bx,000e 0c5b:0029 b8004c mov ax,4c00 课程设计一 将实验7中的power idea公司的数据按照图所示的格式在屏幕上显示现来 table segment db 1975,1976,1977,1978,1979,1980

11、,1981,1982,1983 db 1984,1985,1986,1987,1988,1989,1990,1991,1992 db 1993,1994,1995 dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2795000,3753000,4649000,5937000 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14

12、430,15257,17800 dw 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239 dw 260,304,333 table ends data segment db 32 dup (0) data ends code segment start: mov ax,data mov ds,ax mov ax,table mov es,ax mov bx,0 mov si,0 mov di,0 mov cx,21 mov dh,2 mov dl,30 g: push cx push dx mov ax,es:bx

13、 mov si,ax mov ax,es:bx.2 mov si.2,ax ;年份入ds:si add si,6 mov ax,es:bx.84 mov dx,es:bx.86 call dtoc2 ;收入转成十进制字符入ds:si add si,10 mov ax,es:di.168 mov dx,0 call dtoc2 ;人员数转成十进制字符入ds:si add si,6x,es:di.210 mov dx,0 call dtoc2 ;人均收入转成十进制字符入ds:si mov si,0 ;设置ds:si指向需显示字符首地址 b: mov cx,29 c: push cx mov cl,

14、si jcxz f ;(ds:si)=0转到f执行 d: inc sipop cx loop c inc si mov al,0 mov si,al ;设置结尾符0 mov si,0 ;设置ds:si指向需显示字符首地址 pop dx mov cl,2 call show_str add bx,4 ;dword数据指向下一数据单元 add di,2 ;word数据指向下一数据单元 add dh,1 ;指向显存下一行 pop cx loop g mov ax,4c00h int 21h f: mov al,20h mov si,al ;(ds:si)=0的数据改成空格 jmp d ;名称:dto

15、c2 ;功能:将dword型数据转变为表示十进制的字符串,字符串以0为结尾符。 ;参数:(ax)=dword型数据的低16位; ;(dx)=dword型数据的高16位; ;ds:si指向字符串首地址。 ;返回:无。 dtoc2: push ax push bx push cx push dx push si push di mov di,0 d20: mov cx,10 ;除数为10 call divdw add cx,30h ;余数+30h,转为字符 push cx ;字符入栈 inc di ;记录字符个数 mov cx,ax jcxz d21 ;低位商=0时,转到d21检测高位商 jmp

16、d20 d21: mov cx,dx jcxz d22 ;高低位商全=0时,转到d22执行 jmp d20 d22: mov cx,di d23: pop ax ;字符出栈 mov si,al inc si ;ds:si指向下一单元 loop d23 mov al,0 mov si,al ;设置结尾符0 pop di pop si pop dx pop cx pop bx pop ax ret【篇二:汇编语言第二版习题答案(全) 王爽编写】1个cpu的寻址能力为8kb,那么它的地址总线的宽度为 13位。 (2)1kb的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。 (3

17、)1kb的存储器可以存储 8192(213) 个bit, 1024个byte。 (4)1gb是 1073741824 (230) 个byte、1mb是 1048576(220) 个byte、1kb是 1024(210)个byte。 (5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64 (kb)、 1 (mb)、 16 (mb)、 4 (gb)。 (6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1 (b)、 1 (b)、 2

18、 (b)、 2 (b)、 4 (b)。 (7)从内存中读取1024字节的数据,8086至少要读 512 次,80386至少要读 256 次。 (8)在存储器中,数据和程序以 二进制 形式存放。 解题过程: (1)1kb=1024b,8kb=1024b*8=2n,n=13。 (2)存储器的容量是以字节为最小单位来计算的,1kb=1024b。 (3)8bit=1byte,1024byte=1kb(1kb=1024b=1024b*8bit)。 (4)1gb=1073741824b(即230)1mb=1048576b(即220)1kb=1024b(即210)。 (5)一个cpu有n根地址线,则可以说这

19、个cpu的地址总线的宽度为n。这样的cpu最多可以寻找2的n次方个内存单元。(一个内存单元=1byte)。 (6)8根数据总线一次可以传送8位二进制数据(即一个字节)。 (7)8086的数据总线宽度为16根(即一次传送的数据为2b)1024b/2b=512,同理1024b/4b=256。 (8)在存储器中指令和数据没有任何区别,都是二进制信息。 检测点 2.1 (1) 写出每条汇编指令执行后相关寄存器中的值。 mov ax,62627ax=f4a3h mov ah,31h ax=31a3h mov al,23h ax=3123h add ax,axax=6246h mov bx,826chbx

20、=826ch mov cx,axcx=6246h mov ax,bxax=826ch add ax,bxax=04d8h mov al,bhax=0482h mov ah,blax=6c82h add ah,ahax=d882h add al,6 ax=d888h add al,alax=d810h mov ax,cxax=6246h microsoft(r) windows dos (c)copyright microsoft corp 1990-2001. c:docume1admini1debug0c1c:0100 mov ax,f4a3 0c1c:0103 mov ah,31 0c1c

21、:0105 mov al,23 0c1c:0107 add ax,ax 0c1c:0109 mov bx,826c 0c1c:010c mov cx,ax 0c1c:010e mov ax,bx 0c1c:0110 add ax,bx 0c1c:0112 mov al,bh 0c1c:0114 mov ah,bl 0c1c:0116 add ah,ah 0c1c:0118 add al,6 0c1c:011a add al,al 0c1c:011c mov ax,cx 0c1c:011e -r ax=0000 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si

22、=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0100nv up ei pl nz na po nc 0c1c:0100 b8a3f4 mov ax,f4a3 -t ax=f4a3 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0103nv up ei pl nz na po nc 0c1c:0103 b431 mov ah,31 -t ax=31a3 bx=0000 cx=0000 dx=0000 sp=f

23、fee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0105nv up ei pl nz na po nc 0c1c:0105 b023 mov al,23 -t ax=3123 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0107nv up ei pl nz na po nc 0c1c:0107 01c0 add ax,ax -t ax=6246 bx=0000 cx=0000 dx

24、=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0109nv up ei pl nz na po nc 0c1c:0109 bb6c82 mov bx,826c -t ax=6246 bx=826c cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=010cnv up ei pl nz na po nc 0c1c:010c 89c1 mov cx,ax -t ax=6246 bx=8

25、26c cx=6246 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=010env up ei pl nz na po nc 0c1c:010e 89d8 mov ax,bxax=826c bx=826c cx=6246 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0110nv up ei pl nz na po nc 0c1c:0110 01d8 add ax,bx -t ax=04d

26、8 bx=826c cx=6246 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0112ov up ei pl nz ac pe cy 0c1c:0112 88f8 mov al,bh -t ax=0482 bx=826c cx=6246 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0114ov up ei pl nz ac pe cy 0c1c:0114 88dc mov ah,bl

27、 -t ax=6c82 bx=826c cx=6246 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0116ov up ei pl nz ac pe cy 0c1c:0116 00e4 add ah,ah -t ax=d882 bx=826c cx=6246 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0118ov up ei ng nz ac pe nc 0c1c:0118 0406

28、 add al,06 -t ax=d888 bx=826c cx=6246 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=011anv up ei ng nz na pe nc 0c1c:011a 00c0 add al,al -t ax=d810 bx=826c cx=6246 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=011cov up ei pl nz ac po cy 0c1c

29、:011c 89c8 mov ax,cx -t ax=6246 bx=826c cx=6246 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=011eov up ei pl nz ac po cy 0c1c:011e 0b0c orcx,si ds:0000=20cd -q 检测点2.1 (2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 mov ax,2ax=2 add ax,ax ax=4 add ax,ax ax=8 add ax,ax ax=16 micros

30、oft(r) windows dos (c)copyright microsoft corp 1990-2001.c:docume1admini1debug -a 0c1c:0100 mov ax,2 0c1c:0103 add ax,ax 0c1c:0105 add ax,ax 0c1c:0107 add ax,ax 0c1c:0109 -r ax=0000 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=0c1c ip=0100nv up ei pl nz na po nc 0c1c:0100 b80200 mov ax,0002 -t ax=0002 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0c1c es=0c1c ss=0c1c cs=

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

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