下面的程序将data段中a处的8个数据累加,结果存储到b处的字中。补全程序。
assume cs:code,es:data
data segment
a db 1,2,3,4,5,6,7,8
b dw 0
data ends
code segment
start:mov ax,data -----------------------------
mov es,ax -------------------------------
mov si,0
mov cx,8
...


- [游客] mov cx,4c00h ______...... mov ax,4c00h 05/18 16:46
- [ly6465686] 对了, 我的作业怎么没有看到, 我是刚进入的, ,呵。 。 申请成为了学员,,大哥,你能不能带带我, 09/05 10:43
- [app] 逻辑正确,但是明显没经过调试。 08/30 21:20
- [app] 兄弟,你这程序开头少帖了一行,别的倒是很正确。 08/30 21:16
- [mouse] 计算机告诉好了答案了,我就不说了 ^_^ 08/25 09:32
- [xiaoqiang] 不错,博主继续。。 08/25 08:55
- [xiaomk7758] 呵呵 给ax赋个值容易看出执行结果是否正确 08/22 09:52
- [lwbfq] 没有问题,不过你是计算的16*10,问题中说的是ax的值*10,有点出入。 08/22 09:42
- [lwbfq] 正确。 08/22 09:35
- [xiaomk7758] 呵呵 对是CS 写错了 08/19 14:58
[2008-08-26 11:10] 检测16.2
阅读全文 |
评论次数(1) |
浏览次数(696) |
所属类型(汇编作业)
[2008-08-26 10:50] 检测16.1
下面的程序将code中的a处的8个数据累加,结果存储到b处的dword中,补全程序。
code segment
a dw 1,2,3,4,5,6,7,8
b dd 0
start:mov si,0
mov cx,8
s:mov ax,a[si] ------------------------------
add word ptr b,ax -----------------------
adc word ptr b+2,0 --------------------...
code segment
a dw 1,2,3,4,5,6,7,8
b dd 0
start:mov si,0
mov cx,8
s:mov ax,a[si] ------------------------------
add word ptr b,ax -----------------------
adc word ptr b+2,0 --------------------...
阅读全文 |
评论次数(1) |
浏览次数(773) |
所属类型(汇编作业)
[2008-08-24 11:57] 检测15.1
(1)仔细分析一下上面的int9 中断例程,看看是否可以精简一下?
其实在我们的int 9中断例程中,模拟int指令调用原int 9中断例程的程序是可以精简的,因为在进入中断例程后,IF和TF都已经置0,没有必要在进行设置了。对于程序段:
pushf
pushf
pop ax
and ahm11111100b
push ax
popf
call dword ptr ds:[0]
可以精简为:
pushf ---------------------------------
call dword ptr ds:[0] -------...
其实在我们的int 9中断例程中,模拟int指令调用原int 9中断例程的程序是可以精简的,因为在进入中断例程后,IF和TF都已经置0,没有必要在进行设置了。对于程序段:
pushf
pushf
pop ax
and ahm11111100b
push ax
popf
call dword ptr ds:[0]
可以精简为:
pushf ---------------------------------
call dword ptr ds:[0] -------...
阅读全文 |
评论次数(1) |
浏览次数(820) |
所属类型(汇编作业)
[2008-08-21 00:59] 检测14.2
编程:用加法和移位指令计算(ax)=(ax)*10
提示:(ax)*10=(ax)*2+(ax)*8
assume cs:code
code segment
start:mov ax,16
mov bx,ax
shl ax,1
mov cl,3
shl bx,cl
add ax,bx
mov ax,4c00h
int 21h
code ends
end start...
提示:(ax)*10=(ax)*2+(ax)*8
assume cs:code
code segment
start:mov ax,16
mov bx,ax
shl ax,1
mov cl,3
shl bx,cl
add ax,bx
mov ax,4c00h
int 21h
code ends
end start...
阅读全文 |
评论次数(2) |
浏览次数(721) |
所属类型(汇编作业)
[2008-08-21 00:11] 检测14.1
(1)编程:读取CMOS RAM的2号单元的内容。
assume cs:code
code segment
start:mov al,2
out 70h,al
in al,71h
mov ax,4c00h
int 21h
code ends
end start
(2)编程:向CMOS RAM的2号单元写入0。
assume cs:code
code segment
start:
mov al,2
out 70h,al
mov al,0
...
assume cs:code
code segment
start:mov al,2
out 70h,al
in al,71h
mov ax,4c00h
int 21h
code ends
end start
(2)编程:向CMOS RAM的2号单元写入0。
assume cs:code
code segment
start:
mov al,2
out 70h,al
mov al,0
...
阅读全文 |
评论次数(1) |
浏览次数(712) |
所属类型(汇编作业)
[2008-08-18 16:43] 检测13.1
(1)在上面的内容中,我们用7ch中断例程实现loop的功能,则上面的7ch中断例程所能进行的最大转移位移是多少?
IP存储在栈中占一个字 也就是2^16次方0~ffffH
(不能肯定,有疑义请指出)
还有个想法,既然IP可以通过改变栈中的值来改变,那么CS是要也可以改变,那么这时他的最大转移就是0:0000H~f000:ffffH了
(2)用7ch中断例程完成jmp near ptrs指令的功能,用bx向中断例程传送转移位移。
应用举例:在屏幕的第12行显示data段中,以0结尾的字符串
assume cs:code
data segmen...
IP存储在栈中占一个字 也就是2^16次方0~ffffH
(不能肯定,有疑义请指出)
还有个想法,既然IP可以通过改变栈中的值来改变,那么CS是要也可以改变,那么这时他的最大转移就是0:0000H~f000:ffffH了
(2)用7ch中断例程完成jmp near ptrs指令的功能,用bx向中断例程传送转移位移。
应用举例:在屏幕的第12行显示data段中,以0结尾的字符串
assume cs:code
data segmen...
阅读全文 |
评论次数(4) |
浏览次数(495) |
所属类型(汇编作业)
[2008-08-14 11:08] 检测12.1
(1)用Debug查看内存,情况如下:
0000:0010 68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00
则:4号中断源对应的中断处理程序的入口地址为:A700:6810
4号中断地址应该在0:0010-0:0013中,原题中并没显示
论坛中有的说是打印错误了
所以我把0000:0000该成了0000:0010
(2)存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:
4N,4N+1 IP=4N
存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为:...
0000:0010 68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00
则:4号中断源对应的中断处理程序的入口地址为:A700:6810
4号中断地址应该在0:0010-0:0013中,原题中并没显示
论坛中有的说是打印错误了
所以我把0000:0000该成了0000:0010
(2)存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:
4N,4N+1 IP=4N
存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为:...
阅读全文 |
评论次数(2) |
浏览次数(266) |
所属类型(汇编作业)
[2008-08-13 12:47] 检测11.4
下面的程序执行后:(ax)=?
mov ax,0
push ax
popf flag清0
mov ax,0fff0h
add ax,0010h
pushf 此时ZF=1,PF=1,CF=1 既 ---- 0000 01-0 -1-1
pop (DEBUG得出) ax=3047= 0011 0000 0100 0111
and al,11000101b
and ah,00001000b
ax=0045H
-按理解应该都为0,当DEBUG出的结果并不都为0
其中原理...
mov ax,0
push ax
popf flag清0
mov ax,0fff0h
add ax,0010h
pushf 此时ZF=1,PF=1,CF=1 既 ---- 0000 01-0 -1-1
pop (DEBUG得出) ax=3047= 0011 0000 0100 0111
and al,11000101b
and ah,00001000b
ax=0045H
-按理解应该都为0,当DEBUG出的结果并不都为0
其中原理...
阅读全文 |
评论次数(3) |
浏览次数(303) |
所属类型(汇编作业)
[2008-08-13 11:35] 检测11.3
(1)补全下面的程序,统计F000:0处32个字节中,大小在[32,128]的数据的个数。
mov ax,of00h
mov ds,ax
mov bx,0
mov dx,0
mob cx,32
s:mov al,[bx]
cmp al,32
jb s0 ---小于则转移---------------
cmp al,128
ja s0 -----大于则转移---------------------
inc dx
...
mov ax,of00h
mov ds,ax
mov bx,0
mov dx,0
mob cx,32
s:mov al,[bx]
cmp al,32
jb s0 ---小于则转移---------------
cmp al,128
ja s0 -----大于则转移---------------------
inc dx
...
阅读全文 |
评论次数(1) |
浏览次数(285) |
所属类型(汇编作业)
[2008-08-12 20:23] 检测11.2
写出下面每条指令执行后,ZF,PF,SF,CF,OF等标志位的值
CF OF SF ZF PF al=
sub al,al 0 0 0 1 1 0
mov al,10h - - - - - 00010000
add al,90h 0 0 1 0 1 10100000
mov al,80h - - - - - 100...
CF OF SF ZF PF al=
sub al,al 0 0 0 1 1 0
mov al,10h - - - - - 00010000
add al,90h 0 0 1 0 1 10100000
mov al,80h - - - - - 100...
阅读全文 |
评论次数(1) |
浏览次数(284) |
所属类型(汇编作业)