- [mywiil] 我没用书上的入栈出栈写,就是先看看不用书上的方法能做出来否? ============== 不错 09/19 09:24
- [njutyangxiao] 谢谢你的指导 09/18 17:00
- [younggay] 嗯,应该说理解的没问题。 09/18 15:41
- [njutyangxiao] 检测点16.1的题目是中是这样定义的: a dw 1,2,3,4,5,6,7,8 b dd 09/16 11:23
- [njutyangxiao] 嗯,谢谢指导 09/16 11:22
- [wsrf] assume伪指令指定了段中标号与相应段寄存器的联系。 09/16 09:46
- [wsrf] 没有问题,不过源代码中 a db 1,2,3,4,5,6,7,8 b dw 0 怎么 09/16 09:43
- [njutyangxiao] 谢谢,keep moving! 09/16 09:06
- [njutyangxiao] 谢谢你的指导 09/16 09:05
- [njutyangxiao] 谢谢你的指导 09/16 09:05
[2009-09-22 23:04] 在虚拟机virtual pc中的dos不能单步调试
在虚拟机virtual pc中安装了dos7.1,也设置好了共享文件夹等功能,但是发现在里面debug 程序时,不能进行单步调试,有知道的请告诉我这是什么原因?现在这里谢过了!
有图片为证...
有图片为证...
阅读全文 |
评论次数(0) |
浏览次数(695) |
所属类型(Assembly's Road)
[2009-09-21 00:43] 实验17初稿
assume cs:codesg
datasg segment
fun_table dw fun0,fun1,fun2,input,error,space
fun0 db ' 0 read floopy','$'
fun1 db ' 1 read floopy','$'
fun2 db ' 2 exit program','$'
input db ' Please input the number[0,1,2]:','$'
error db ' Error ,Notice:the number is 0,1 or ...
datasg segment
fun_table dw fun0,fun1,fun2,input,error,space
fun0 db ' 0 read floopy','$'
fun1 db ' 1 read floopy','$'
fun2 db ' 2 exit program','$'
input db ' Please input the number[0,1,2]:','$'
error db ' Error ,Notice:the number is 0,1 or ...
阅读全文 |
评论次数(1) |
浏览次数(700) |
所属类型(Assembly's Road)
[2009-09-18 17:04] 17.3字符串的接收、显示以及删除(1)
题目:编程,编写一个接受字符串输入的程序,应该有如下功能:
(1)在输入的同时需要显示这个字符串
(2)一般在输入回车符后,字符串输入结束
(3)能够删除已经输入的字符
分析:我没用书上的入栈出栈写,就是先看看不用书上的方法能做出来否?实现过程在源代码中有详细的分析。
源代码:
assume cs:codesg
datasg segment
db 1024 dup(0)
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov s...
(1)在输入的同时需要显示这个字符串
(2)一般在输入回车符后,字符串输入结束
(3)能够删除已经输入的字符
分析:我没用书上的入栈出栈写,就是先看看不用书上的方法能做出来否?实现过程在源代码中有详细的分析。
源代码:
assume cs:codesg
datasg segment
db 1024 dup(0)
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov s...
阅读全文 |
评论次数(1) |
浏览次数(989) |
所属类型(Assembly's Road)
[2009-09-17 19:19] 第十七章第二节题
题目:编程,接受用户的键盘输入,输入‘r’,将屏幕上的字符设置为红色;输入‘g’,将屏幕上的字符设置为绿色;输入‘b’时,将屏幕上的字符设置为蓝色。
源代码:
assume cs:codesg
codesg segment
start:
mov ax,0
int 16h;调用int 16h的0号功能读取键盘输入的字符,输入的字符的ascii码放在了al中,ah中放的是扫面码
cmp al,72h;如果是字母‘r’,则跳转到show_red处
je show_red
cmp al,67h;如果是字母‘g’,则跳...
源代码:
assume cs:codesg
codesg segment
start:
mov ax,0
int 16h;调用int 16h的0号功能读取键盘输入的字符,输入的字符的ascii码放在了al中,ah中放的是扫面码
cmp al,72h;如果是字母‘r’,则跳转到show_red处
je show_red
cmp al,67h;如果是字母‘g’,则跳...
阅读全文 |
评论次数(0) |
浏览次数(663) |
所属类型(Assembly's Road)
[2009-09-15 19:29] 16.3求sin值的程序
编写一个子程序,计算sin(x)。并在屏幕中间显示结果。
源代码:
assume cs:codesg
codesg segment
start:
mov al,60
call showsin
mov ax,4c00h
int 21h
showsin:
jmp short show
table dw ag0,ag30,ag60,ag90,ag120,ag150,ag180
ag0 db '0',0
ag30 db '0.5',0...
源代码:
assume cs:codesg
codesg segment
start:
mov al,60
call showsin
mov ax,4c00h
int 21h
showsin:
jmp short show
table dw ag0,ag30,ag60,ag90,ag120,ag150,ag180
ag0 db '0',0
ag30 db '0.5',0...
阅读全文 |
评论次数(3) |
浏览次数(295) |
所属类型(Assembly's Road)
[2009-09-10 10:14] 第十三章字符串转换为大写
题目:编写、安装7ch的中断例程。
功能:将一个全是字母,以0结尾的字符串,转化为大写。
参数:ds:si指向字符串的首地址
应用举例:将data段中的字符串转化为大写。
源代码:
assume cs:codesg
datasg segment
db 'conversation',0
datasg ends
codesg segment
start:
mov ax,cs
mov ds,ax
mov si,offset capital_s
mov ax,0000h
...
功能:将一个全是字母,以0结尾的字符串,转化为大写。
参数:ds:si指向字符串的首地址
应用举例:将data段中的字符串转化为大写。
源代码:
assume cs:codesg
datasg segment
db 'conversation',0
datasg ends
codesg segment
start:
mov ax,cs
mov ds,ax
mov si,offset capital_s
mov ax,0000h
...
阅读全文 |
评论次数(0) |
浏览次数(257) |
所属类型(Assembly's Road)
[2009-08-28 16:02] 第九章问题1
问题:有如下程序,填写两条指令,使该程序在运行中将s处的一条指令复制到s0处。
assume cs:codesg
codesg segment
s: mov ax,bx
mov si,offset s
mov di,offset s0
________________
________________
s0: nop
nop
codesg ends
end s
分析:开始看这个题时,不知道该咋办?因为被题目中的把一条指令复制到s0处这句话给弄糊涂了。没有思绪去看王老师的分析时,才...
assume cs:codesg
codesg segment
s: mov ax,bx
mov si,offset s
mov di,offset s0
________________
________________
s0: nop
nop
codesg ends
end s
分析:开始看这个题时,不知道该咋办?因为被题目中的把一条指令复制到s0处这句话给弄糊涂了。没有思绪去看王老师的分析时,才...
阅读全文 |
评论次数(2) |
浏览次数(289) |
所属类型(Assembly's Road)
[2009-08-26 20:37] 第七章问题7.9
编程:将datasg段中的每个单词的前4个字母改为大写字母。
解答:思路和上一篇一样,用自定义的堆栈段来存放需要存储的临时变量。只是要注意的是si的初始值要改为3,因为每个单词的前3个字符不是属于单词的,单词的开始数字为3(从0数起)。
源代码:
assume cs:codesg,ds:datasg
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
dat...
解答:思路和上一篇一样,用自定义的堆栈段来存放需要存储的临时变量。只是要注意的是si的初始值要改为3,因为每个单词的前3个字符不是属于单词的,单词的开始数字为3(从0数起)。
源代码:
assume cs:codesg,ds:datasg
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
dat...
阅读全文 |
评论次数(1) |
浏览次数(252) |
所属类型(Assembly's Road)
[2009-08-26 14:07] 问题7.8有关循环改进的问题
在上一篇中我们使用了dx来存储外层循环的值,等到内存循环结束之后,再把外层循环的值从dx中提取出来,送还给cx中。但是如果dx也被占用了呢?虽然我们还可以使用别的寄存器,但是cpu的寄存器还是有限的。如8086cpu就只有14个寄存器。在前一篇文章中,si,cx,ax,bx都不能用来存储cx的值,因为这些寄存器在循环中也可能要被使用到。cs,ip,ds不能用,因为cs:ip时刻都是指向当前的指令,ds则执行datasg数据段;ss,sp最好也不要用,他们总是指向栈顶。那能供我们选择的也就只有dx,di,es,bp等寄存器。可是最坏的情况是所有的寄存器都被使用了,该如何来存储外层循环的值呢?
...
...
阅读全文 |
评论次数(2) |
浏览次数(246) |
所属类型(Assembly's Road)
[2009-08-25 17:27] 问题7.7和7.8
题目:将datasg段中的每个单词改写成大写字母
分析:这里要知道的两个问题。1:知道如何把字母转换成大写。把其ascii码的第五位设置成0就是大写,设置成1就是小写。2:在datasg段定义的4个单词,每个的存储长度都是10h。然后可以用二维数组的概念来理解。其三:这里要应用到[bx+si+idata]的形式。
源代码:
assume cs:codesg,ds:datasg
datasg segment
db 'file '
db 'edit '
db 'reen '
...
分析:这里要知道的两个问题。1:知道如何把字母转换成大写。把其ascii码的第五位设置成0就是大写,设置成1就是小写。2:在datasg段定义的4个单词,每个的存储长度都是10h。然后可以用二维数组的概念来理解。其三:这里要应用到[bx+si+idata]的形式。
源代码:
assume cs:codesg,ds:datasg
datasg segment
db 'file '
db 'edit '
db 'reen '
...
阅读全文 |
评论次数(2) |
浏览次数(240) |
所属类型(Assembly's Road)