- [游客] 感谢 11/15 22:10
- [游客] 把:DD 5937000,改成:DD 4294967295,你的错误,立刻就暴露出来。呵呵 05/19 18:30
- [游客] 计算人均时,是DD型除以DW型。把DD型的最大值代进去,你的程序,就溢出了。 05/19 18:28
- [游客] 注意不溢出的除法。 05/19 18:25
- [游客] 老师好啊~ 06/28 11:01
- [longphui] 谢谢 09/03 20:10
- [longphui] 谢谢 09/03 16:23
- [longphui] 谢谢 09/02 15:26
- [longphui] 谢谢 09/02 09:13
- [sissim] 恩恩,谢谢指正 01/11 18:24
- [even3] 亲,你好。。。这边有一个汇编语言程序,但是就是不知道哪里出了问题,问了很多人,都不知道想麻烦您一下, 05/16 20:48
- [mcjfo] 楼主可以帮我解决这个问题吗?谢谢! 为什么它会跳过JMP DD 指令不执行啊 小弟搞了好久抖没 06/08 06:50
[2010-03-15 10:57] 检测点17.1
正确,因为int 16h检查键盘缓冲区是否有数据,若无数据,则循环等待。如果不允许中断,则无法处理键盘输入,从而形成死循环。...
阅读全文 |
评论次数(0) |
浏览次数(1271) |
所属类型(汇编作业)
[2010-03-15 09:42] 实验16改进
学习了同学们的程序,发现了更好的方法。自己总是跳不出框框,思维定势。怎么办?
上一个程序,将子程序的偏移地址定义为dw sub1-(int7c-start)+200h。
1.将中断例程放在安装程序start之前,就可以在偏移量中去掉复制指令那段代码占用的字节,变成dw sub1+200h。
2.将中断例程入口地址设置为0020:0000,就可以解决总是以0为基础地址的问题,变成dw sub1。
修改后程序如下:
assume cs:code
code segment
int7c: jmp short set
table ...
上一个程序,将子程序的偏移地址定义为dw sub1-(int7c-start)+200h。
1.将中断例程放在安装程序start之前,就可以在偏移量中去掉复制指令那段代码占用的字节,变成dw sub1+200h。
2.将中断例程入口地址设置为0020:0000,就可以解决总是以0为基础地址的问题,变成dw sub1。
修改后程序如下:
assume cs:code
code segment
int7c: jmp short set
table ...
阅读全文 |
评论次数(0) |
浏览次数(1146) |
所属类型(汇编作业)
[2010-03-12 21:12] 实验16
安装7ch中断的程序如下:
assume cs:code
code segment
start: mov ax,0
mov es,ax
mov di,200h
mov ax,code
mov ds,ax
mov si,offset int7c
mov cx,offset int7ce-offset int7c
cld
rep movsb
...
assume cs:code
code segment
start: mov ax,0
mov es,ax
mov di,200h
mov ax,code
mov ds,ax
mov si,offset int7c
mov cx,offset int7ce-offset int7c
cld
rep movsb
...
阅读全文 |
评论次数(0) |
浏览次数(1073) |
所属类型(汇编作业)
[2010-03-12 20:36] 检测点16.2 关于assume的进一步认识
程序如下:
assume cs:code,es:data
data segment
a dw 1,2,3,4,5,6,7,8
b dd 0
data ends
code segment
start: mov ax,data
mov es,ax
mov si,0
mov cx,8
s: mov ax,a[si]
add word ptr b,ax
adc...
assume cs:code,es:data
data segment
a dw 1,2,3,4,5,6,7,8
b dd 0
data ends
code segment
start: mov ax,data
mov es,ax
mov si,0
mov cx,8
s: mov ax,a[si]
add word ptr b,ax
adc...
阅读全文 |
评论次数(0) |
浏览次数(1139) |
所属类型(汇编作业)
[2010-03-12 19:09] 检测点16.1
程序如下:
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 word ptr b,ax
adc word ptr b[2],0
add si,2
loop s
mov ax,4c0...
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 word ptr b,ax
adc word ptr b[2],0
add si,2
loop s
mov ax,4c0...
阅读全文 |
评论次数(0) |
浏览次数(1152) |
所属类型(汇编作业)
[2010-03-12 17:33] 实验15
程序如下:
assume cs:code
stack segment
db 128 dup(0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,128
push cs
pop ds
mov ax,0
mov es,ax
mov si,offse...
assume cs:code
stack segment
db 128 dup(0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,128
push cs
pop ds
mov ax,0
mov es,ax
mov si,offse...
阅读全文 |
评论次数(0) |
浏览次数(1258) |
所属类型(汇编作业)
[2010-02-18 17:18] 检测点15.1
(1)可以精简为
pushf
call dword ptr ds:[0]
(2)
将程序中修改int 9中断例程的入口地址的程序段前面加上cli,修改完毕后再恢复即可。
有两段程序修改中断例程的入口地址:
pushf
cli
mov word ptr es:[9*4],offset int9
mov es:[9*4+2],cs
popf
pushf
cli
push ds:[0]
pop es:[9*4]
push ds:[2]
pop es:[9*4+2]
popf...
pushf
call dword ptr ds:[0]
(2)
将程序中修改int 9中断例程的入口地址的程序段前面加上cli,修改完毕后再恢复即可。
有两段程序修改中断例程的入口地址:
pushf
cli
mov word ptr es:[9*4],offset int9
mov es:[9*4+2],cs
popf
pushf
cli
push ds:[0]
pop es:[9*4]
push ds:[2]
pop es:[9*4+2]
popf...
阅读全文 |
评论次数(0) |
浏览次数(1167) |
所属类型(汇编作业)
[2010-02-16 17:24] 实验14
借用了实验13第三题对行数处理的思路,这里也把地址存到内存里面,利用循环依此取出数据并处理,保存为字符串,用int 10h的2号子程序和9号dos功能调用定位光标和显示字符串。
assume cs:code
data segment
str db '**/**/** **:**:**$'
adr db 9,8,7,4,2,0
code segment
start: mov ax,data
mov ds,ax
mov si,offset str
...
assume cs:code
data segment
str db '**/**/** **:**:**$'
adr db 9,8,7,4,2,0
code segment
start: mov ax,data
mov ds,ax
mov si,offset str
...
阅读全文 |
评论次数(0) |
浏览次数(1171) |
所属类型(汇编作业)
[2010-02-16 15:39] 检测点14.2
程序如下:
assume cs:code
code segment
start: mov ax,1234h
mov bx,ax
shl bx,1
mov cl,3
shl ax,cl
add ax,bx
mov ax,4c00h
int 21h
code ends
end start
调试如下:
D:\masm>debug ce14_2....
assume cs:code
code segment
start: mov ax,1234h
mov bx,ax
shl bx,1
mov cl,3
shl ax,cl
add ax,bx
mov ax,4c00h
int 21h
code ends
end start
调试如下:
D:\masm>debug ce14_2....
阅读全文 |
评论次数(0) |
浏览次数(1176) |
所属类型(汇编作业)
[2010-02-16 15:21] 检测点14.1
(1)读取CMOS RAM的2号单元的内容。
首先在debug中用a命令将指令写入内存,用t命令执行。
D:\masm>debug
-a
0B00:0100 mov al,2
0B00:0102 out 70,al
0B00:0104 in al,71
0B00:0106
-t
AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B00 ES=0B00 SS=0B00 CS=0B00 IP=0102 NV UP EI PL NZ NA PO NC
0B00:0...
首先在debug中用a命令将指令写入内存,用t命令执行。
D:\masm>debug
-a
0B00:0100 mov al,2
0B00:0102 out 70,al
0B00:0104 in al,71
0B00:0106
-t
AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B00 ES=0B00 SS=0B00 CS=0B00 IP=0102 NV UP EI PL NZ NA PO NC
0B00:0...
阅读全文 |
评论次数(0) |
浏览次数(1162) |
所属类型(汇编作业)
『 查看更多文章 』