研究试验 5 函数如何接收不定数量的参数
(1)对于第一个问题:main函数把参数入栈从而实现对showchar函数的传递,而showchar函数是通过改变BP值(相对于改变栈顶)去定位要接收的参数.
而对于showchar函数为什么从BP+4处开如引用的理解为:showchar函数第一条指令为PUSH BP,所以BP+2,而main函数引用showchar函数时通过CALL引用,因为CALL一个子程序时要把偏移地址IP入栈,所以是BP+4;
(2)对于第二个接收不定数量的参数问题:
在第二个程序中,通过对第一个问题的理解,不定参数是第三个参数开始,所以很容易得到B...


- [gsyangchao] SI的引用是因为for循环语句中的局部变量a,SI中存放了他的值。 博主要写出函数来呀,不 02/09 00:48
- [martian] 静下心来想一想,如果还不明白再把程序一遍,估计就能够理解了。 12/26 19:35
- [游客] 牛就一个字,我只说一次! 12/18 22:00
- [zyw23] 实验通过了才发上来的 12/15 22:25
- [mess] 在实dos下搞定这个程序,自己又能看到结果就不多说了 呵呵 12/15 17:08
- [wsrf] 程序没有问题,博主继续努力。 12/12 10:59
- [游客] 程序正确。 12/10 20:28
- [游客] 正确。 12/08 18:50
- [游客] 学习了。 12/07 15:21
- [zyw23] 运行前用CLS清一下屏幕 12/06 14:10
[2008-12-31 11:07] 研究试验 5 函数如何接收不定数量的参数
阅读全文 |
评论次数(1) |
浏览次数(591) |
所属类型(汇编作业)
[2008-12-18 15:19] 课件2 完成:_)虚拟机上成功调试
assume cs:code
code segment
start: mov ax,cs
mov es,ax
mov bx,offset liststart
mov dx,0
mov cx,1
mov ah,3
mov al,3
int 13h ;将启动程序送入软盘
mov ax,4c00h
int 21h
liststart:jmp short list
db '1) reset pc$'
db '2) star...
code segment
start: mov ax,cs
mov es,ax
mov bx,offset liststart
mov dx,0
mov cx,1
mov ah,3
mov al,3
int 13h ;将启动程序送入软盘
mov ax,4c00h
int 21h
liststart:jmp short list
db '1) reset pc$'
db '2) star...
阅读全文 |
评论次数(1) |
浏览次数(607) |
所属类型(汇编作业)
[2008-12-16 16:26] 实验17, 麻烦老师帮我看一下,进行读操作时,逻辑扇区号用36就可以成功,用其他们的很多数字都试了,一试就会死机?
对虚拟机里的虚拟软驱进行写操作,任何逻辑扇区号都正常,程序能成功;
问题是进行读操作时,逻辑扇区号用36就可以成功,用其他们的很多数字都试了,一试就会死机?
面,道,扇区都用DEBUG一一对过,求出的结果都没问题.
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int7c
mov ax,0
mov es,ax
...
问题是进行读操作时,逻辑扇区号用36就可以成功,用其他们的很多数字都试了,一试就会死机?
面,道,扇区都用DEBUG一一对过,求出的结果都没问题.
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int7c
mov ax,0
mov es,ax
...
阅读全文 |
评论次数(0) |
浏览次数(501) |
所属类型(汇编作业)
[2008-12-15 22:29] 实验16, 实验通过,但是总感觉还是摸不透位移转移.
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int7c
mov ax,0
mov es,ax
mov di,204h
mov cx,offset int7cend-offset int7c
cld
rep movsb
mov ax,stack
...
stack segment
db 128 dup (0)
stack ends
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int7c
mov ax,0
mov es,ax
mov di,204h
mov cx,offset int7cend-offset int7c
cld
rep movsb
mov ax,stack
...
阅读全文 |
评论次数(1) |
浏览次数(598) |
所属类型(汇编作业)
[2008-12-15 13:58] 实验15
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int9
mov ax,0
mov es,ax
mov di,204h
mov cx,offset int9end-offset int9
cld
rep movsb
mov ax,stack
...
stack segment
db 128 dup (0)
stack ends
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int9
mov ax,0
mov es,ax
mov di,204h
mov cx,offset int9end-offset int9
cld
rep movsb
mov ax,stack
...
阅读全文 |
评论次数(2) |
浏览次数(561) |
所属类型(汇编作业)
[2008-12-12 16:49] 实验14
assume cs:code
code segment
s1: db '// ::'
s2: db 9,8,7,4,2,0
start: mov ax,cs
mov ds,ax
mov bx,offset s2
mov si,offset s1
mov ax,0b800h
mov es,ax
mov di,12*160+32*2
mov dx,5 ;间隔符号输出的循环次数
mov cx,6 ;日期时间的输出的循...
code segment
s1: db '// ::'
s2: db 9,8,7,4,2,0
start: mov ax,cs
mov ds,ax
mov bx,offset s2
mov si,offset s1
mov ax,0b800h
mov es,ax
mov di,12*160+32*2
mov dx,5 ;间隔符号输出的循环次数
mov cx,6 ;日期时间的输出的循...
阅读全文 |
评论次数(0) |
浏览次数(547) |
所属类型(汇编作业)
[2008-12-11 15:35] 实验13
一
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset show
mov ax,0
mov es,ax
mov di,200h
mov es:[7ch*4],di
mov es:[7ch*4+2],ax ;设置中断7C的程序入口
mov cx,offset showend-offset show ;设置CX的传输长度
cld ...
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset show
mov ax,0
mov es,ax
mov di,200h
mov es:[7ch*4],di
mov es:[7ch*4+2],ax ;设置中断7C的程序入口
mov cx,offset showend-offset show ;设置CX的传输长度
cld ...
阅读全文 |
评论次数(1) |
浏览次数(592) |
所属类型(汇编作业)
[2008-12-10 18:48] 实验12
assume cs:code
code segment
start: mov ax,0
mov es,ax
mov di,200h
mov es:[0],di
mov es:[2],ax
mov ax,code
mov ds,ax
mov si,offset d0
mov cx,offset d0end-offset d0
cld ;粗心,看了论坛才加进来的,之前没这命令调试成功
rep ...
code segment
start: mov ax,0
mov es,ax
mov di,200h
mov es:[0],di
mov es:[2],ax
mov ax,code
mov ds,ax
mov si,offset d0
mov cx,offset d0end-offset d0
cld ;粗心,看了论坛才加进来的,之前没这命令调试成功
rep ...
阅读全文 |
评论次数(1) |
浏览次数(570) |
所属类型(汇编作业)
[2008-12-08 15:58] 实验11
assume cs:codesg
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax, 4c00h
int 21h
letterc:push ax
push si
mov al,0dfh...
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax, 4c00h
int 21h
letterc:push ax
push si
mov al,0dfh...
阅读全文 |
评论次数(1) |
浏览次数(501) |
所属类型(汇编作业)
[2008-12-05 22:38] 课件设计1
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183...
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183...
阅读全文 |
评论次数(3) |
浏览次数(583) |
所属类型(汇编作业)