通过这个程序加深了JMP 标号 指令中保存的是相对位移而不是偏移地址.
assume cs:code
code segment
mov ax,4c00h
int 21h
start:mov ax,0 程序从这里开始
s:nop
nop
mov di,offset s 将S标号偏移地址赋DI
mov si,offset s2 将S2标号偏移地址赋SI
mov ax,cs:[si] 将代码S2处短跳转指令数据赋AX
mov cs:[di],ax 将AX数据赋代码S标号处,没...
- [tinyparticle] 不错,思路清晰 09/29 21:22
- [wsrf] 正确。 09/16 09:22
- [wsrf] 这个用DEBUG查看一下程序所占字节数就可以了,没有必要把每条指令所占字节数都记住,博主的做法是正确 09/16 08:22
- [tinyparticle] 取cx=0(cx取0-ffffh所占字节数是一样的),进debug查看程序总长度。提示:查看书P91 09/11 20:07
- [huibian2009] 呵呵,逻辑错误就是在编译的时候可以通过,但在执行的过程中会发生错误。 09/10 11:39
- [huibian2009] 呵呵,这道题考查的是对栈空时栈顶的设置,可以参考教程上关于栈的相关章节。这道题应该是选第1个。 09/09 08:37
- [911911] 谢谢已改正 09/08 15:51
- [wsrf] (1)说修改的内容的时候应该是从高字节到低字节写起。如内存单元220FE存储的字为5CCA,而不应该 09/08 08:53
- [911911] 改正了, 特意看了看前面章节的举例 才发现举的DEBUG操作时 数据是不加H的 写段程序指令时数据都 09/07 11:26
- [mywiil] debug下默认的就是16进制,所以不用加H,但是源代码中是需要加H的,因为源程序在编译的时候,数据 09/07 09:12
[2010-12-06 16:42] 实验8
阅读全文 |
评论次数(0) |
浏览次数(447) |
所属类型(汇编作业)
[2010-12-06 14:01] 检测点9.3
assume cs:code
code segment
start:mov ax,2000h
mov ds,ax
mov bx,0
s:mov cl,[bx]
mov ch,0
____
inc bx
loop s
ok:dec bx
mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
补全编程,利用LOOP指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储到DX中.
...
mov ch,0
add cx,1
inc bx
......
code segment
start:mov ax,2000h
mov ds,ax
mov bx,0
s:mov cl,[bx]
mov ch,0
____
inc bx
loop s
ok:dec bx
mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
补全编程,利用LOOP指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储到DX中.
...
mov ch,0
add cx,1
inc bx
......
阅读全文 |
评论次数(0) |
浏览次数(476) |
所属类型(汇编作业)
[2010-12-06 10:44] 检测点9.2
assume cs:code
code segment
start:mov ax,2000h
mov ds,ax
mov bx,0
s:____
____
____
____
jmp short s
ok:mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
补全编程,利用JCXZ指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在DX中.
...
s:mov cx,0
mov cl,[bx]
jcxz ok
inc bx
jmp short s
......
code segment
start:mov ax,2000h
mov ds,ax
mov bx,0
s:____
____
____
____
jmp short s
ok:mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
补全编程,利用JCXZ指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在DX中.
...
s:mov cx,0
mov cl,[bx]
jcxz ok
inc bx
jmp short s
......
阅读全文 |
评论次数(0) |
浏览次数(519) |
所属类型(汇编作业)
[2010-12-06 09:56] 检测点9.1
1.
assume cs:code
data segment
?
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
ocde ends
end start
若要使程序中的JMP指令执行后,CS:IP指向程序的第一条指令,在DATA段中应该定义 db ?,0,0,?,?,?,?,?... ?处可定义任意数据第二,三字节必须为0
2.
assume cs:code
data segment
dd 12345678h
data ends
code se...
assume cs:code
data segment
?
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
ocde ends
end start
若要使程序中的JMP指令执行后,CS:IP指向程序的第一条指令,在DATA段中应该定义 db ?,0,0,?,?,?,?,?... ?处可定义任意数据第二,三字节必须为0
2.
assume cs:code
data segment
dd 12345678h
data ends
code se...
阅读全文 |
评论次数(0) |
浏览次数(453) |
所属类型(汇编作业)
[2009-09-29 11:47] 实验7
本想用栈和多个循环,结果越考虑越迷糊,先把自己弄了两天的发上来,再学学其他学长的程序设计
assume cs:code,ds:data
data segment
db '197519761977197819791980198119821983198419851986198719881989199019911992199319941995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827,803530,1183000,1843000,2759000,3753000,4649...
assume cs:code,ds:data
data segment
db '197519761977197819791980198119821983198419851986198719881989199019911992199319941995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827,803530,1183000,1843000,2759000,3753000,4649...
阅读全文 |
评论次数(1) |
浏览次数(651) |
所属类型(汇编作业)
[2009-09-15 11:33] 检测点6.1
(1)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:
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
...
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
...
阅读全文 |
评论次数(1) |
浏览次数(627) |
所属类型(汇编作业)
[2009-09-11 17:47] 第五章实验4
(1)编程,向内存0:200~0:23F依次传送数据0~63(3FH).
(2)编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括"mov ax,4c00H"和"int 21H".
assume cs:code
code segment
mov ax,0020H
mov ds,ax
mov bx,0
mov cx,64
s:mov [bx],bl
inc bl
loop s
mov ax,4c00H
int 21H
code...
(2)编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括"mov ax,4c00H"和"int 21H".
assume cs:code
code segment
mov ax,0020H
mov ds,ax
mov bx,0
mov cx,64
s:mov [bx],bl
inc bl
loop s
mov ax,4c00H
int 21H
code...
阅读全文 |
评论次数(2) |
浏览次数(766) |
所属类型(汇编作业)
[2009-09-07 14:43] 第三章实验任务
(1)使用DEBUG,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空.
MOV AX,FFFF
MOV DS,AX
MOV AX,2200
MOV SS,AX
MOV SP,0100
MOV AX,[0] ;AX= 5BEA
ADD AX,[2] ;AX= 5CCA
MOV BX,[4] ;BX= 30F0
ADD BX,[6] ;BX= 6029
PUSH AX ;SP= 00FE:修改的内存单元的地址是 220FE 内容为 CA5C 改正 5CCA
PUSH BX ;SP= 00FC:修改的内...
MOV AX,FFFF
MOV DS,AX
MOV AX,2200
MOV SS,AX
MOV SP,0100
MOV AX,[0] ;AX= 5BEA
ADD AX,[2] ;AX= 5CCA
MOV BX,[4] ;BX= 30F0
ADD BX,[6] ;BX= 6029
PUSH AX ;SP= 00FE:修改的内存单元的地址是 220FE 内容为 CA5C 改正 5CCA
PUSH BX ;SP= 00FC:修改的内...
阅读全文 |
评论次数(2) |
浏览次数(452) |
所属类型(汇编作业)
[2009-09-04 15:02] 检测点3.2
(1)补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H~2000FH中.逆序复制的含义如图3.17所示(图中内存里的数据均为假设).
MOV AX,1000H
MOV DS,AX
(MOV AX,2000H)
(MOV SS,AX)
(MOV SP,0010H)
PUSH [0]
PUSH [2]
PUSH [4]
PUSH [6]
PUSH [8]
PUSH [A]
PUSH [C]
PUSH [E]
(2)补全下面的程序,使其可以将10000H~1000FH中的8个字...
MOV AX,1000H
MOV DS,AX
(MOV AX,2000H)
(MOV SS,AX)
(MOV SP,0010H)
PUSH [0]
PUSH [2]
PUSH [4]
PUSH [6]
PUSH [8]
PUSH [A]
PUSH [C]
PUSH [E]
(2)补全下面的程序,使其可以将10000H~1000FH中的8个字...
阅读全文 |
评论次数(4) |
浏览次数(429) |
所属类型(汇编作业)
[2009-09-03 17:05] 检测点3.1
(1)在Debug中,用"D 0:0 1F"查看内存,结果如下.
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88
下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值.
MOV AX,1
MOV DS,AX
MOV AX,[0000] AX= 2662
MOV BX,[0001] BX= E626
MOV AX,BX AX= E626
MOV ...
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88
下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值.
MOV AX,1
MOV DS,AX
MOV AX,[0000] AX= 2662
MOV BX,[0001] BX= E626
MOV AX,BX AX= E626
MOV ...
阅读全文 |
评论次数(2) |
浏览次数(216) |
所属类型(汇编作业)