汇编语言指令错误纠正
给出下列错误希望哪位大侠给出深入具体的解答哈,能讲出的相关的知识最好都附上.本人是汇编语言新手.多谢指教!1movcx,dl2movip,ax3moves,1234h4m...
给出下列错误希望哪位大侠给出深入具体的解答哈,能讲出的相关的知识最好都附上.本人是汇编语言新手.多谢指教!
1 mov cx,dl
2 mov ip,ax
3 mov es,1234h
4 mov es,ds
5 mov al,300
6 mov [sp],ax
7 mov ax,bx+di
8 mov 20h,ah
9 xchg [si],30h
10 pop cs
11 sub [si],[di]
12 push ah
13 adc ax,ds
14 add [si],80h
15 in al,3fch
16 out dx,ah
如果有些总结那最好不过了哈. 展开
1 mov cx,dl
2 mov ip,ax
3 mov es,1234h
4 mov es,ds
5 mov al,300
6 mov [sp],ax
7 mov ax,bx+di
8 mov 20h,ah
9 xchg [si],30h
10 pop cs
11 sub [si],[di]
12 push ah
13 adc ax,ds
14 add [si],80h
15 in al,3fch
16 out dx,ah
如果有些总结那最好不过了哈. 展开
1个回答
展开全部
1 mov cx,dl;数据类型不匹配,CX为16位,DL为8位
2 mov ip,ax ;IP为能在指令中出现,它是下一条要执行指令的偏移地址,不允许指令对其进行改变
3 mov es,1234h ;立即数1234H不能直接送段寄存器
4 mov es,ds ;段寄存器之间不能直接传送数据
5 mov al,300 ;数据类型不匹配,300超过一个字节,无符号字节最大数为255
6 mov [sp],ax ;SP为堆栈指针,对栈顶元素操作应该用PUSH指令,而不能使用MOV指令
7 mov ax,bx+di ;应该改为mov ax,[bx+di]
8 mov 20h,ah ;目的操作不能为立即数
9 xchg [si],30h ;交换指令的两个操作数均不能为立即数
10 pop cs ;CS不能作为目的操作数,也就是说不能通过指令直接改变CS的值
11 sub [si],[di] ;两内存单元不能直接进行减法操作
12 push ah ;堆栈操作以字为单元
13 adc ax,ds ;加法指令的操作数不能为段寄存器
14 add [si],80h ;没有指定内存单元的数据类型,应该改为add byte ptr [si],80h
15 in al,3fch;外设端口地址超过8位时应该用DX,应该改为 mov dx,3fch in al,dx
16 out dx,ah ;输入/输出指令为累加器专用指令,8位累加器为AL而不是AH。
2 mov ip,ax ;IP为能在指令中出现,它是下一条要执行指令的偏移地址,不允许指令对其进行改变
3 mov es,1234h ;立即数1234H不能直接送段寄存器
4 mov es,ds ;段寄存器之间不能直接传送数据
5 mov al,300 ;数据类型不匹配,300超过一个字节,无符号字节最大数为255
6 mov [sp],ax ;SP为堆栈指针,对栈顶元素操作应该用PUSH指令,而不能使用MOV指令
7 mov ax,bx+di ;应该改为mov ax,[bx+di]
8 mov 20h,ah ;目的操作不能为立即数
9 xchg [si],30h ;交换指令的两个操作数均不能为立即数
10 pop cs ;CS不能作为目的操作数,也就是说不能通过指令直接改变CS的值
11 sub [si],[di] ;两内存单元不能直接进行减法操作
12 push ah ;堆栈操作以字为单元
13 adc ax,ds ;加法指令的操作数不能为段寄存器
14 add [si],80h ;没有指定内存单元的数据类型,应该改为add byte ptr [si],80h
15 in al,3fch;外设端口地址超过8位时应该用DX,应该改为 mov dx,3fch in al,dx
16 out dx,ah ;输入/输出指令为累加器专用指令,8位累加器为AL而不是AH。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询