补全编程, 利用loop指令,实现在内存 2000h段中查找第一个值为0的字节, 找到后,将它的偏移地址存储在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 ...


- [deepblue] 好记性不如烂笔头,lz好习惯啊! 07/22 22:09
- [deepblue] 恩,第二题 我写的是 mov [bx+2],cs 如果是 mov [bx+2],code 是 07/22 22:08
- [deepblue] 不错哦! 07/22 21:57
- [deepblue] 恩 ,不错。 07/22 21:55
- [deepblue] 这是 jmp short 标号 形式吗 ,那jmp far ptr 标号呢 07/22 21:54
- [deepblue] 很漂亮 07/22 21:46
- [zh198785] 我的BX没有进行增量操作, 把BX去掉都行, 只是基于类C的写法, 用了[bx]做前缀 07/19 07:44
- [游客] 问下:你在何处对BX进行的增量操作? 07/18 23:40
- [xiaochong] 总结的不错,都是重点的地方,很不错! 07/18 20:08
- [xiaochong] 完全正确,博主继续! 07/18 20:04
[2008-07-22 21:07] 检测点 9.3
阅读全文 |
评论次数(1) |
浏览次数(604) |
所属类型(汇编作业)
[2008-07-22 21:06] 检测点 9.2
补全程序, 利用jcxz指令, 实现内存2000H段中查找第一个值为0的字节, 找到后,将它的偏移地址存储在dx中
assume cs:code
code segment
start:mov ax,2000h
mov ds,ax
mov bx,0
s:mov ch,0
mov cl,[bx]
jcxz ok
inc bx
jmp shorts
ok:mov dx,bx
mov ax,4c00h
...
assume cs:code
code segment
start:mov ax,2000h
mov ds,ax
mov bx,0
s:mov ch,0
mov cl,[bx]
jcxz ok
inc bx
jmp shorts
ok:mov dx,bx
mov ax,4c00h
...
阅读全文 |
评论次数(1) |
浏览次数(567) |
所属类型(汇编作业)
[2008-07-22 21:00] 检测点 9.1
(1) 程序如下
assume cs:code
data segment
db 0
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
code ends
end start
若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令, 在data段中应该定义哪些数据?
(2) 程序如下
assume cs:code
data segment
dd 12345678H
d...
assume cs:code
data segment
db 0
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
code ends
end start
若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令, 在data段中应该定义哪些数据?
(2) 程序如下
assume cs:code
data segment
dd 12345678H
d...
阅读全文 |
评论次数(1) |
浏览次数(550) |
所属类型(汇编作业)
[2008-07-16 06:55] 检测点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
...
阅读全文 |
评论次数(2) |
浏览次数(259) |
所属类型(汇编作业)
[2008-07-10 04:18] 检测点 3.2
(1) 补全下面的程序,使其可以将 10000H~1000FH中的8个字, 逆序复制到200000H~2000FH中.
mov ax, 1000H
mov ds, ax
mov bx, 2000(H)
mov ss, bx
mov sp, 0010(H)
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]
(2) 补全下面的程序,使其可以将 100000H~1000FH中的8个字,逆序复制到20000H~2000FH中
mov ax, 2000(H)
mov...
mov ax, 1000H
mov ds, ax
mov bx, 2000(H)
mov ss, bx
mov sp, 0010(H)
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]
(2) 补全下面的程序,使其可以将 100000H~1000FH中的8个字,逆序复制到20000H~2000FH中
mov ax, 2000(H)
mov...
阅读全文 |
评论次数(1) |
浏览次数(288) |
所属类型(汇编作业)
[2008-07-10 04:15] 检测点 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(H)
mov bx, [0001] BX = E626(H)
mov ax...
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(H)
mov bx, [0001] BX = E626(H)
mov ax...
阅读全文 |
评论次数(2) |
浏览次数(256) |
所属类型(汇编作业)
[2008-07-09 03:33] 检测点2.3
下面的3条指令执行后, CPU几次修改IP? 都是在什么时候? 最后IP中的值是多少?
mov ax, bx //第一次: 取指完成后ip+2
sub ax,ax //第二次: 取指完成后ip+2
jmp ax //第三次: 取指完成后ip+1; 第四次:执行后ip=ax
4次修改IP, 最后IP中的值 = ax = 0...
mov ax, bx //第一次: 取指完成后ip+2
sub ax,ax //第二次: 取指完成后ip+2
jmp ax //第三次: 取指完成后ip+1; 第四次:执行后ip=ax
4次修改IP, 最后IP中的值 = ax = 0...
阅读全文 |
评论次数(1) |
浏览次数(258) |
所属类型(汇编作业)
[2008-07-09 02:48] 检测点 2.2
(1) 给定段地址为 0001H, 仅通过变化偏移地址寻址, CPU的寻址范 围为 00010(H) 到 1000F(H)
(2) 有一数据存放在内存 20000(H) 单元中, 现给定段地址为SA, 若想用偏移地址寻到此单元, 则SA应满足的条件是: 最小为 1001(H), 最大为 2000(H).
当段地址SA < 1001(H) 或者 sa > 2000(H) 时无法寻址到 20000(H)单元...
(2) 有一数据存放在内存 20000(H) 单元中, 现给定段地址为SA, 若想用偏移地址寻到此单元, 则SA应满足的条件是: 最小为 1001(H), 最大为 2000(H).
当段地址SA < 1001(H) 或者 sa > 2000(H) 时无法寻址到 20000(H)单元...
阅读全文 |
评论次数(1) |
浏览次数(221) |
所属类型(汇编作业)
[2008-07-09 01:55] 检测点 2.1
(1) 写出每条汇编指令执行后相关寄存器中的值
mov ax, 62627 AX = F4A3(H)
mov ah, 31(H) AX = 31A3(H)
mov al, 23(H) AX = 3123(H)
add ax, ax AX = 6246(H)
mov bx, 826C(H) BX = 826C(H)
mov cx, ax CX = 6246(H)
mov ax, bx AX = 826C(H)
add ax, bx A...
mov ax, 62627 AX = F4A3(H)
mov ah, 31(H) AX = 31A3(H)
mov al, 23(H) AX = 3123(H)
add ax, ax AX = 6246(H)
mov bx, 826C(H) BX = 826C(H)
mov cx, ax CX = 6246(H)
mov ax, bx AX = 826C(H)
add ax, bx A...
阅读全文 |
评论次数(5) |
浏览次数(229) |
所属类型(汇编作业)
[2008-07-09 00:26] 检测点1.1
(1) 1个CPU的寻址能力为8KB, 那么它的地址总线的宽度为 13
(2) 1KB的存储器有 1024 个存储单元. 存储单元的编号从 0 到
1023
(3) 1KB的存储器可以存储 8192 个bit, 1024 个 Byte
(4) 1GB, 1MB, 1KB 分别是 1024^3, 1024^2, 1024^1 Byte
(5) 8080, 8088, 80286, 80386 的地址总线宽度分别为 16根,20
根, 24根, 32根, 则它们的寻址能力分别为: 64(KB), 1
(MB), 16(MB), 4(GB...
(2) 1KB的存储器有 1024 个存储单元. 存储单元的编号从 0 到
1023
(3) 1KB的存储器可以存储 8192 个bit, 1024 个 Byte
(4) 1GB, 1MB, 1KB 分别是 1024^3, 1024^2, 1024^1 Byte
(5) 8080, 8088, 80286, 80386 的地址总线宽度分别为 16根,20
根, 24根, 32根, 则它们的寻址能力分别为: 64(KB), 1
(MB), 16(MB), 4(GB...
阅读全文 |
评论次数(1) |
浏览次数(207) |
所属类型(汇编作业)
页码数(1):
1