汇编网首页登录博客注册
yangle0125的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
好友圈
文章收藏
友情链接

[2009-02-27 20:01] 综合研究 简单的printf函数

long pow10 (int p);
void printf(const char *format,...);

main()
{
        int n;
        printf("%c,%d",'a',-32766);
}

void printf(const char *format,...)
{
char c;
int a=0,argc=0,num,n;
while((c=*(format++))!=0)
{
        if (c=='%'){
        argc++;
        c=*(format++);
        if (c=='c'){
                *(char far *)(0xb800000...
阅读全文 | 评论次数(1) | 浏览次数(664) | 所属类型(汇编作业)

[2009-02-26 11:51] 综合研究 关于malloc的研究代码

现将研究malloc用法的程序中每一句所对应的汇编代码简述如下:

(1)#define Buffer ...

mov bx,0200
mov es,bx
xor bx,bx

(2)Buffer=(char *)malloc(20)

mov es:[bx],ax

(3)Buffer[10]=0

mov byte ptr es:[bx+0a],00

(4)while (Buffer[10]!=8)

cmp byte ptr es:[bx+0a],08
jnz 021f

(5)Buffer[Buffer[10]]='a'+Buffer[10...
阅读全文 | 评论次数(2) | 浏览次数(718) | 所属类型(汇编作业)

[2009-02-15 17:03] 课程设计 二 最终代码 测试通过

assume cs:code 

code segment 
;装载程序到扇区 
start: 
push cs 
pop es 
mov bx,offset boot 

mov al,2;写入的扇区数 
mov ch,0;磁道号 
mov cl,1;扇区号 
mov dl,0;表示软驱a 
mov dh,0;面号 

mov ah,3;功能号,3表示写 
int 13h 

mov ax,4c00h 
int 21h 

boot: 
;装载第二扇区 
mov ax,0 
mov es,ax 
mov bx,7e00h 

mov al...
阅读全文 | 评论次数(2) | 浏览次数(713) | 所属类型(汇编作业)

[2009-02-12 17:16] 第十七章 实验17   疑问

assume cs:code

code segment
start:
;安装int7ch
mov ax,code
mov ds,ax
mov si,offset int7ch
mov ax,0
mov es,ax
mov di,550h
mov cx,offset int7chend-offset int7ch
cld
rep movsb
;设置中断向量表
mov word ptr es:[7ch*4],550h
mov word ptr es:[7ch*4+2],0h

;读盘测试
mov ax,0
mov es,ax
mov bx,200h
...
阅读全文 | 评论次数(1) | 浏览次数(794) | 所属类型(汇编作业)

[2009-02-10 14:36] 第十七章 检测点 关于字符串输入的一个疑问

正确
在进入int16前,cpu把tf,if置零,如果没有设置if=1的指令,该例程将等不到键盘的输入。进一步说,当缓冲区没有字符时,int16将设置if=1,并进入等待。

书上17.3节给出的处理字符串输入的程序中,对于那个2号功能,即charshow,我认为noempty标号下面的mov byte ptr es:[di+2],' ' 是多余的,应该去掉。加入空格的一个目的是为了与屏幕上已有的字符隔开,比如屏幕上原来有:pill一词,现在如果从p开始写了一个字符k,这样的话就会变成kill,而加入一个空格的话就是k ll,不会引起歧义。
加空格还有一个更重要的目的,就是在按退格键的...
阅读全文 | 评论次数(1) | 浏览次数(690) | 所属类型(汇编作业)

[2009-02-08 16:23] 第十六章 实验16

assume cs:code

code segment
start:
;安装int7ch
mov ax,code
mov ds,ax
mov si,offset int7ch
mov ax,0
mov es,ax
mov di,201h
mov cx,offset int7chend-offset int7ch
cld
rep movsb
;设置中断向量表
mov word ptr es:[7ch*4],201h
mov word ptr es:[7ch*4+2],0h
;依次测试功能
mov ah,0
int 7ch

mov ah,1
mov ...
阅读全文 | 评论次数(2) | 浏览次数(602) | 所属类型(汇编作业)

[2009-02-07 15:27] 第十六章 求正弦的参数判断

mov bl,0
mov cx,7
s:
cmp al,bl
je next
add bl,30
loop s
wrong:
出错处理
next:
程序继续...
阅读全文 | 评论次数(2) | 浏览次数(551) | 所属类型(汇编作业)

[2009-02-07 11:53] 第十五章 实验15

assume cs:code,ss:stack

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,offset int9
mov di,204h
mov cx,offset int9end-offset int9
cld
rep movsb

push es:[9*4]
pop es:[200]
push es:[9*4+...
阅读全文 | 评论次数(1) | 浏览次数(621) | 所属类型(汇编作业)

[2009-02-07 10:37] 第十五章 检测点 疑问

15.1

(1)
pushf
call dword ptr ds:[0]

疑问:既然在进入中断例程后tf,if都已置零,那在这之前标志寄存器就已经进栈,是不是可以再精简,只剩一句:

call dword ptr [0]

解答:刚刚想了想,应该是这样,首先不能省去pushf

因为我们编写的这个例程中,在调用系统提供的int9之前,cpu是不会做pushf 等那四步工作的,然而在这个例程执行完毕后在两处执行了iret,一是系统的int9结尾,一是我们编写的这个例程结尾,为了与系统int9例程结尾的iret配对,在调用系统的int9前我们需要pushf

至于i...
阅读全文 | 评论次数(1) | 浏览次数(570) | 所属类型(汇编作业)

[2009-02-06 22:13] 第十四章 实验14

assume cs:code 

data segment
        db 9,'/',8,'/',7,' ',4,':',2,':',0,0
data ends

code segment 
start: 
mov ax,data
mov ds,ax
mov si,0 
mov ax,0b800h 
mov es,ax 
mov di,160*4+8*2
mov cx,6 
s1: 
mov ax,[si] 
out 70h,al 
in al,71h 
mov ah,al  
shr ah,1
shr ah,1
shr ah,1
shr ah,1 
...
阅读全文 | 评论次数(5) | 浏览次数(875) | 所属类型(汇编作业)
『 查看更多文章 』