


- [latemane] 我写得太不规范了,想到哪写到哪,还是楼上的写的规范,是我们学些的榜样呀. 07/23 23:57
- [asm_sande] divdw子程中,你改变了BP值而没有保护,如果在别的程序中有使用BP的时候,就容易出现数据错误,而 07/23 23:52
- [asm_sande] 但如果在子程序中使用了太多的寄存器的话,那寄存器的入栈有时候是不是要全部入栈,怎样才能达到最大的效率 07/23 23:44
- [游客] 没错,多多加油! 07/14 18:26
- [duckgaga] 不错,继续努力. 07/14 17:29
- [latemane] 在代码中使用了标号的话,那代表的就是一个立即数,当加载后会用一个数值来代替,所以在开始部分 mov 07/13 19:41
- [tomato] 正确!第二题的16位寄存器传送,改为8位最好了! 07/13 16:00
- [游客] 贴的作业没有问题,如此观之,博主学习效果很好,呵呵 07/12 10:22
- [游客] 交作业——检验自己对知识的全面深刻的认知的一种传统手段。 符合劳苦大众仍然不知所向的精神状态, 07/12 10:20
- [latemane] 确实是如此,那以后做的时候把思路写出来,这样其实也是对自己思路的一个检验!! 07/12 06:24
[2008-07-23 19:00] 课程设计1
这个课程设计其实就在实验七的基础上加入了将数字转换为字符并显示出来的代码,代码有点乱,而且结果也有点不理想,那就是在显示收入的时候,从位数大于七开始,最后第二位就有点不对了,不知道是在讲数字写入内存的时候出现的问题还是在写入显存的时候出的错,先贴出来,也算是对今天的一个总结,附带截图
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990...
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990...
阅读全文 |
评论次数(3) |
浏览次数(758) |
所属类型(汇编作业)
[2008-07-14 16:35] 试验六
实验六的要求其实是将问题7.9中的代码补全,书上对解题思路已经有了很详细的分析,在这里我只把代码补全:
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
st...
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
st...
阅读全文 |
评论次数(1) |
浏览次数(798) |
所属类型(汇编作业)
[2008-07-14 13:00] 实验五
由于有些内容是和具体的机器有关的,每个人的情况不一样,所以我就不一一列出来了,只把其中的少部分问题列出来.
1、三 由于可执行文件加载的时候是按照代码的顺序加载的,根据代码我们可以看出来,code段在data和stack段之后,data段和stack段的大小都为16字节,所以
当程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1.
2、三 当程序加载后,每个段的段地址都为16的倍数,就是地址的最后一位为0,如果段的长度不足16字节的,它要最少分配16字节的存储空间,data和stack段都为4字节,不足16字节,所以,操作系统自动为其分...
1、三 由于可执行文件加载的时候是按照代码的顺序加载的,根据代码我们可以看出来,code段在data和stack段之后,data段和stack段的大小都为16字节,所以
当程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1.
2、三 当程序加载后,每个段的段地址都为16的倍数,就是地址的最后一位为0,如果段的长度不足16字节的,它要最少分配16字节的存储空间,data和stack段都为4字节,不足16字节,所以,操作系统自动为其分...
阅读全文 |
评论次数(1) |
浏览次数(804) |
所属类型(汇编作业)
[2008-07-13 15:33] 实验四
1、使段地址为0,偏移地址和传递的值各使用一个存储器来存储。
assume cs:code
code segment
mov ax,0
mov ds,ax
mov bx,200H
mov cx,64
s: mov [bx],ax
inc bx
inc ax
loop s
mov ax,4c00H
int 21H
code ends
end
2、使段地址为200,偏移地址和传递的值使用同一个寄存器来存储。
assume cs:code
code segment
mov ax,200H
mov ds,ax
...
assume cs:code
code segment
mov ax,0
mov ds,ax
mov bx,200H
mov cx,64
s: mov [bx],ax
inc bx
inc ax
loop s
mov ax,4c00H
int 21H
code ends
end
2、使段地址为200,偏移地址和传递的值使用同一个寄存器来存储。
assume cs:code
code segment
mov ax,200H
mov ds,ax
...
阅读全文 |
评论次数(2) |
浏览次数(856) |
所属类型(汇编作业)
[2008-07-11 10:46] 检测点3.2
1、
mov ax,1000H
mov ds,ax
_mov ax,2000H___
_mov ss,ax___
_mov sp,10H___
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]
2、
mov ax,2000H
mov ds,ax
_mov ax,1000H__
_mov ss,ax__
_mov sp,0__
pop [E]
pop [C]
pop [A]
pop [8]
pop [6]
pop [4]
pop [2]
pop ...
mov ax,1000H
mov ds,ax
_mov ax,2000H___
_mov ss,ax___
_mov sp,10H___
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]
2、
mov ax,2000H
mov ds,ax
_mov ax,1000H__
_mov ss,ax__
_mov sp,0__
pop [E]
pop [C]
pop [A]
pop [8]
pop [6]
pop [4]
pop [2]
pop ...
阅读全文 |
评论次数(4) |
浏览次数(776) |
所属类型(汇编作业)
[2008-07-10 10:46] 检测点3.1
(1)
mov ax,1
mov ds,ax
mov ax,[0000] ax=2662H
mov bx,[0001] bx=E626H
mov ax,bx ax=E626H
mov ax,[0000] ax=2662H
mov bx,[0002] bx=D6E6H
add ax,bx ax=FD48H
add ax,[0004] ax=2C14H
mov ax,0 ax=0000H
mov al,[0002] ax=00E6H ...
mov ax,1
mov ds,ax
mov ax,[0000] ax=2662H
mov bx,[0001] bx=E626H
mov ax,bx ax=E626H
mov ax,[0000] ax=2662H
mov bx,[0002] bx=D6E6H
add ax,bx ax=FD48H
add ax,[0004] ax=2C14H
mov ax,0 ax=0000H
mov al,[0002] ax=00E6H ...
阅读全文 |
评论次数(1) |
浏览次数(567) |
所属类型(汇编作业)
[2008-07-10 01:02] 检测点2.3
下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
解:CPU修改料IP4次
mov ax,bx 放入指令缓冲器后 IP修改了一次,指令执行后(ax)=(bx)
sub ax,ax 放入指令缓冲器后 IP修改了一次,指令执行后(ax)=0
jmp ax 放入指令缓冲器后 IP修改了一次,指令执行过程中修改了(IP)=(ax),而(ax)=0,故(IP)=0
所以IP总共修改了四次,最后(IP)=0...
mov ax,bx
sub ax,ax
jmp ax
解:CPU修改料IP4次
mov ax,bx 放入指令缓冲器后 IP修改了一次,指令执行后(ax)=(bx)
sub ax,ax 放入指令缓冲器后 IP修改了一次,指令执行后(ax)=0
jmp ax 放入指令缓冲器后 IP修改了一次,指令执行过程中修改了(IP)=(ax),而(ax)=0,故(IP)=0
所以IP总共修改了四次,最后(IP)=0...
阅读全文 |
评论次数(1) |
浏览次数(591) |
所属类型(汇编作业)
[2008-07-10 00:49] 检测点2.2
1,给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为__00010H____到___1000F___H.
解:偏移地址为0000H-ffffH
即物理地址为0001:0000-0001:ffff
即00010H-1000fH
2.有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足条件是:最小为__1001H____,最大为__2000H____.
解:由于偏移地址的变化范围为0000H-ffffH,故0000H时SA最大为2000H,为ffffH时最小为1001H.
提示:反过来思考,当SA为多少时...
解:偏移地址为0000H-ffffH
即物理地址为0001:0000-0001:ffff
即00010H-1000fH
2.有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足条件是:最小为__1001H____,最大为__2000H____.
解:由于偏移地址的变化范围为0000H-ffffH,故0000H时SA最大为2000H,为ffffH时最小为1001H.
提示:反过来思考,当SA为多少时...
阅读全文 |
评论次数(2) |
浏览次数(601) |
所属类型(汇编作业)
[2008-07-10 00:09] 检测点2.1
(1)写出每条汇编指令执行后相关寄存器中的值
mov ax,62627 ax=f4a3h
mov ah,31h ax=31a3h
mov al,23h ax=3123h
add ax,ax ax=6246h
mov bx,826ch bx=826ch
mov cx,ax cx=6246h
mov ax,bx ax=826ch
add ax,bx ax=04d8h
mov al,bh ax=0482h
mov ah,bl ax=6c82h
add a...
mov ax,62627 ax=f4a3h
mov ah,31h ax=31a3h
mov al,23h ax=3123h
add ax,ax ax=6246h
mov bx,826ch bx=826ch
mov cx,ax cx=6246h
mov ax,bx ax=826ch
add ax,bx ax=04d8h
mov al,bh ax=0482h
mov ah,bl ax=6c82h
add a...
阅读全文 |
评论次数(1) |
浏览次数(601) |
所属类型(汇编作业)
[2008-07-09 23:43] 检测点1.1
(1)一个CPU的寻址能力为8KB,那么它的地址总线的宽度为_13__。
(2)1KB的存储器有__1024__个存储单元?存储单元的编号从__0__到_1023_。
(3)1KB的存储器可以存储__8192__个bit,__1024__个byte
(4)1GB 1MB 1KB分别是__2^30,2^20,2^10__byte。
(5)8080,8088,80286,80386的地址总线宽度分别为16根,20根,24根,32根。则它们的寻址能力分别为:__64__KB,__1__MB,_16__MB,___4__GB。
(6)8080,8088,8086,8...
(2)1KB的存储器有__1024__个存储单元?存储单元的编号从__0__到_1023_。
(3)1KB的存储器可以存储__8192__个bit,__1024__个byte
(4)1GB 1MB 1KB分别是__2^30,2^20,2^10__byte。
(5)8080,8088,80286,80386的地址总线宽度分别为16根,20根,24根,32根。则它们的寻址能力分别为:__64__KB,__1__MB,_16__MB,___4__GB。
(6)8080,8088,8086,8...
阅读全文 |
评论次数(1) |
浏览次数(541) |
所属类型(汇编作业)
页码数(1):
1