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
s:
mov al,a[si]
mov ah,0
add b,ax
inc si
loop s
mov ax,4c00h
int 21h
code ends
end start...


- [crazyman] 答案是 0070:018B ----------- 这次就对了。 06/16 11:30
- [crazyman] 2) int 19h 中断例程,可以由DOS提供 ------------------- int 06/16 11:29
- [crazyman] 楼上说的有道理,只要是有可能出现类此隐患的地方,都应该处理。 06/16 11:27
- [crazyman] add b[0],ax adc b[2],0 ========== 向内存中写数据的时候, 06/16 11:26
- [tomato] 第一题错了吧。 06/15 15:50
- [tomato] 正确。 06/15 15:50
- [tomato] 正确。 06/15 15:49
- [tomato] 正确。 06/15 15:49
- [tomato] 正确。 06/15 15:48
- [tomato] 第二题是有两个地方。 06/15 15:48
[2009-06-15 15:16] 16.2
阅读全文 |
评论次数(1) |
浏览次数(290) |
所属类型(汇编作业)
[2009-06-15 15:15] 16.1
下面的程序将code段中a处的8个数据累加,结果存储到b处的双字中,补全程序。
assume cs:code
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 b[0],ax
adc b[2],0
add si,2
loop s
mov ax,4c00h
int 21h ...
assume cs:code
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 b[0],ax
adc b[2],0
add si,2
loop s
mov ax,4c00h
int 21h ...
阅读全文 |
评论次数(2) |
浏览次数(432) |
所属类型(汇编作业)
[2009-06-15 15:15] 15.1
(1)可以精简为:
pushf
call dword ptr ds:[0]
两条指令。
(2)仔细分析上面程序中的主程序[第269页],看看有什么潜在的问题?
改写方法:在pop ds:[2]指令后加入一条cli指令,并在mov es:[9*4+2],cs指令后加入一条sti指令即可。...
pushf
call dword ptr ds:[0]
两条指令。
(2)仔细分析上面程序中的主程序[第269页],看看有什么潜在的问题?
改写方法:在pop ds:[2]指令后加入一条cli指令,并在mov es:[9*4+2],cs指令后加入一条sti指令即可。...
阅读全文 |
评论次数(2) |
浏览次数(439) |
所属类型(汇编作业)
[2009-06-15 15:14] 14.2
编程:用加法和移位指令计算(ax)=(ax)*10
完整程序如下:
assume cs:code
code segment
start:
mov ax,1000h
mov bx,ax
shl bx,1 ;(ax)=(ax)*2
mov cl,3
shl ax,cl ;(ax)=(ax)*8
add ax,bx ;(ax)=(ax)*10
...
完整程序如下:
assume cs:code
code segment
start:
mov ax,1000h
mov bx,ax
shl bx,1 ;(ax)=(ax)*2
mov cl,3
shl ax,cl ;(ax)=(ax)*8
add ax,bx ;(ax)=(ax)*10
...
阅读全文 |
评论次数(1) |
浏览次数(502) |
所属类型(汇编作业)
[2009-06-15 15:13] 14.1
1) 编程,读取CMOS RAM的2号单元的内容。
mov al,2
out 70h,al
in al,71h
(2) 编程,向CMOS RAM的2号单元写入0。
mov al,2
out 70h,al
sub al,al
out 71h,al...
mov al,2
out 70h,al
in al,71h
(2) 编程,向CMOS RAM的2号单元写入0。
mov al,2
out 70h,al
sub al,al
out 71h,al...
阅读全文 |
评论次数(1) |
浏览次数(463) |
所属类型(汇编作业)
[2009-06-15 15:13] 13.2
判断下面说法的正误:
(1) 我们可以编程改变FFFF:0处的指令,使得CPU不去执行BIOS中的硬件系统检测和初始化程序。
错,FFFF:0 处的指令都是固化在ROM中的,并不是在内存中的,所以我们无法通过编程改变它。
(2) int 19h 中断例程,可以由DOS提供。
对,DOS可以对int 19h 中断例程重定义,但是在开机后第一次使用的int 19h 中断例程,并不是来自于内存,而是在ROM中,所以DOS不能影响开机后第一次执行的int 19h的中断例程。...
(1) 我们可以编程改变FFFF:0处的指令,使得CPU不去执行BIOS中的硬件系统检测和初始化程序。
错,FFFF:0 处的指令都是固化在ROM中的,并不是在内存中的,所以我们无法通过编程改变它。
(2) int 19h 中断例程,可以由DOS提供。
对,DOS可以对int 19h 中断例程重定义,但是在开机后第一次使用的int 19h 中断例程,并不是来自于内存,而是在ROM中,所以DOS不能影响开机后第一次执行的int 19h的中断例程。...
阅读全文 |
评论次数(2) |
浏览次数(492) |
所属类型(汇编作业)
[2009-06-15 15:12] 13.1
(1)由于只改IP值,故最大转移位移为-32768--32767
(2)
lp: push bp
mov bp,sp
add [bp+2],bx
pop bp
iret...
(2)
lp: push bp
mov bp,sp
add [bp+2],bx
pop bp
iret...
阅读全文 |
评论次数(1) |
浏览次数(409) |
所属类型(汇编作业)
[2009-06-15 15:12] 12.1
(1) 用Debug查看内存,情况如下:
0000:0000 68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00
则3号中断源对应的中断处理程序的入口地址为:__039D:0016__。
;答案是 0070:018B
(2) 存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:__N*4__。
存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为N*4+2。...
0000:0000 68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00
则3号中断源对应的中断处理程序的入口地址为:__039D:0016__。
;答案是 0070:018B
(2) 存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:__N*4__。
存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为N*4+2。...
阅读全文 |
评论次数(2) |
浏览次数(408) |
所属类型(汇编作业)
[2009-06-07 22:52] 9.3
检测点9.3
补全程序,利用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 b...
补全程序,利用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 b...
阅读全文 |
评论次数(1) |
浏览次数(412) |
所属类型(汇编作业)
[2009-06-07 22:52] 9.2
检测点9.2
补全编程,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。
assume cs:code
code segment
start: mov ax,2000H
mov ds,ax
mov bx,0
s: mov cl,[bx];将内存字节单元ds:[bx]送cl
mov ch,0;将ch清0,如果(cl)=0,则找到第一个0值字节,
于是(c...
补全编程,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。
assume cs:code
code segment
start: mov ax,2000H
mov ds,ax
mov bx,0
s: mov cl,[bx];将内存字节单元ds:[bx]送cl
mov ch,0;将ch清0,如果(cl)=0,则找到第一个0值字节,
于是(c...
阅读全文 |
评论次数(1) |
浏览次数(401) |
所属类型(汇编作业)
『 查看更多文章 』