哎...痛苦.如此easy的题目搞了半天.
晚上只做第一题.第一题前面的实验9其实做过了.
我错的原因也是非常让人郁闷..刚开始的时候.子程序的ret没写.
一直没返回..找了N个小时都不明白咋报错了.重新写一次还是错...
最后没办法.去吃饭了.再来时突然发现了问题所在.哎...
其他的就没什么了.我开始用的是loop,最后发现用loop的话要
保存cx的值.比较麻烦.看了下答案.用的是jmp方式.也可以,而且不用
保存cx的值...凑合着用吧.
测试的时候由于是写到显示缓冲区..debug也看不到结果.那个急啊.
反正就是一直不成功.最...
- [游客] 过程的回味真是无穷! 08/05 17:57
- [kingwrcy] 多谢提示.已经过去接近4个月了.由于工作原因,汇编一直没碰了.哎.准备重新温习下. 07/31 15:09
- [younggay] 分析没有问题。加油! 04/15 16:43
- [younggay] 回答正确。 04/15 16:41
- [游客] 不知道为什么用c做code段老是报错.改成才c1就可以了.莫名其妙 我用的编辑器是masmp 04/15 15:48
- [游客] 嗯,说的很对。这里的栈操作就是一个一个的完成数据移送。 04/15 15:44
- [游客] 刚开始是这样的,弄得慢没关系,只要你努力,总会有结果的。思维是锻炼出来的,经过这程序,再有类似的思维 04/15 11:29
- [游客] 得到别人的技术,不如学会别人的思维方式。从自己参考别人的代码过程,要反思自己思维上的不足。 完 04/15 11:25
- [游客] 嗯。分析的很正确。 注意体会jmp的执行原理。 04/15 11:21
- [游客] 调程序,尤其是汇编程序,耐心是必备的。 04/15 09:37
[2009-04-13 21:14] 实验10
阅读全文 |
评论次数(2) |
浏览次数(755) |
所属类型(汇编作业)
[2009-04-13 15:50] 实验九
此题没啥难度.自己肯花时间多调就一定ok,贴出我的方法.可能有些繁琐.不过结果ok.呵呵.
assume ss:stack
stack segment
db 32 dup (0) ;中转栈
dw 0 ;保存cx计数器
stack ends
data segment
dw 'w','e','l','c','o','m','e',' ','t','o',' ','m','a','s','m','!'
db 00000010b,00100100b,01110001b ;三种颜色
data en...
assume ss:stack
stack segment
db 32 dup (0) ;中转栈
dw 0 ;保存cx计数器
stack ends
data segment
dw 'w','e','l','c','o','m','e',' ','t','o',' ','m','a','s','m','!'
db 00000010b,00100100b,01110001b ;三种颜色
data en...
阅读全文 |
评论次数(1) |
浏览次数(653) |
所属类型(汇编作业)
[2009-04-11 19:59] 实验八
这个题目比较古怪.又卡了半天.最后分析如下:
-r
AX=0000 BX=0000 CX=0023 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0BE4 ES=0BE4 SS=0BF4 CS=0BF4 IP=0005 NV UP EI PL NZ NA PO NC
0BF4:0005 B80000 MOV AX,0000
-t
AX=0000 BX=0000 CX=0023 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0BE4 ...
-r
AX=0000 BX=0000 CX=0023 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0BE4 ES=0BE4 SS=0BF4 CS=0BF4 IP=0005 NV UP EI PL NZ NA PO NC
0BF4:0005 B80000 MOV AX,0000
-t
AX=0000 BX=0000 CX=0023 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0BE4 ...
阅读全文 |
评论次数(1) |
浏览次数(721) |
所属类型(汇编作业)
[2009-04-11 16:55] 实验七
刚开始觉得这题目超难...
做了一个多小时没什么头绪.
参考了下论坛上牛人的代码.再自己分析了下.弄懂了.贴出我的代码.我用了2种方法.一种常规的.就是一行一行的覆盖table表.另外一种是用到了堆栈.感觉第二种方法比较好理解.贴出来备忘.
assume cs:code,ss:stack
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991'...
做了一个多小时没什么头绪.
参考了下论坛上牛人的代码.再自己分析了下.弄懂了.贴出我的代码.我用了2种方法.一种常规的.就是一行一行的覆盖table表.另外一种是用到了堆栈.感觉第二种方法比较好理解.贴出来备忘.
assume cs:code,ss:stack
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991'...
阅读全文 |
评论次数(1) |
浏览次数(607) |
所属类型(汇编作业)
[2009-04-11 13:17] 问题7.9
代码如下:
assume cs:code,ss:stack,ds:data
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,10H
...
assume cs:code,ss:stack,ds:data
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,10H
...
阅读全文 |
评论次数(1) |
浏览次数(624) |
所属类型(汇编作业)
[2009-04-11 11:00] 实验5
第五题.
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c1 segment
db 0,0,0,0,0,0,0,0
c1 ends
code segment
start:mov ax,a
mov ds,ax
mov ax,b
mov es,ax
mov ax,c1
mov ss,ax
...
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c1 segment
db 0,0,0,0,0,0,0,0
c1 ends
code segment
start:mov ax,a
mov ds,ax
mov ax,b
mov es,ax
mov ax,c1
mov ss,ax
...
阅读全文 |
评论次数(2) |
浏览次数(651) |
所属类型(汇编作业)
[2009-04-11 09:56] 监测点6.1
1.
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: mov ax,[bx]
mov cs:[bx],ax ;此条指令为所填指令
add bx,2
loop s
mov ax,4c00h
int 21h
c...
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: mov ax,[bx]
mov cs:[bx],ax ;此条指令为所填指令
add bx,2
loop s
mov ax,4c00h
int 21h
c...
阅读全文 |
评论次数(1) |
浏览次数(619) |
所属类型(汇编作业)
[2009-04-10 15:20] 检测点3.2
1.
MOV AX,1000H
MOV SA,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 SA,AX
MOV AX,1000H
MOV SS,AX
MOV SP,0H
POP [E]
POP [C]
POP [A]
POP [8]
POP [6]
POP [4]
POP [2]
POP [0]
这2个题目的关键是...
MOV AX,1000H
MOV SA,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 SA,AX
MOV AX,1000H
MOV SS,AX
MOV SP,0H
POP [E]
POP [C]
POP [A]
POP [8]
POP [6]
POP [4]
POP [2]
POP [0]
这2个题目的关键是...
阅读全文 |
评论次数(1) |
浏览次数(626) |
所属类型(汇编作业)
[2009-04-10 14:28] 检测点3.1
第一题:
2662H
e626H
e626H
2662H
d6e6H
fd48H
2c14H
0000H
00e6H
0000H
0026H
000cH
ps:注意的问题有 物理地址00010可以有多个段地址和偏移地址构成.如物理地址(00010H)=段地址(0000H*16)+偏移地址(0010H),也可以是物理地址(00010H)=段地址(0001H*16)+偏移地址(0000H).所以题目中的MOV AX,1是没有错误的.看到论坛上有同学就这个问题提问了.所以写出来.免得自己也糊涂了.
第二题:
1.
mov ax,6622H
jmp 0ff0:...
2662H
e626H
e626H
2662H
d6e6H
fd48H
2c14H
0000H
00e6H
0000H
0026H
000cH
ps:注意的问题有 物理地址00010可以有多个段地址和偏移地址构成.如物理地址(00010H)=段地址(0000H*16)+偏移地址(0010H),也可以是物理地址(00010H)=段地址(0001H*16)+偏移地址(0000H).所以题目中的MOV AX,1是没有错误的.看到论坛上有同学就这个问题提问了.所以写出来.免得自己也糊涂了.
第二题:
1.
mov ax,6622H
jmp 0ff0:...
阅读全文 |
评论次数(1) |
浏览次数(604) |
所属类型(汇编作业)