汇编语言的一个小问题,大神帮帮我

作者&投稿:文曲 (若有异议请与网页底部的电邮联系)
;有以下几个问题:
;1、格式不规范。标准的COM文件格式如下所示
;2、第三行的空,实际上是绝对地址、段地址和偏移地址的换算关系,现在已知绝对地址(200H)和偏移地址(0020H),;求段地址. 显然,段地址=[绝对地址(200H) - 偏移地址(0020H)] / 10h = 1EH
;3、程序中 s:mov al,[bx] 显然这里是错的,应该是MOV AL,BL

code segment
main proc far
assume cs:code,ds:code
org 100h

start:

mov ax,1eh ;这里填上1EH
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,64

s: MOV AL,BL
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
main endp
code ends
end start

这程序是你自己编的吧?
其实是立即数—>内存,所以源操作数使用寄存器操作数(把0放到寄存器中,每循环一次,寄存器的值加一)就可以。
如果非要你这样做的话,就得把0-63保存在内存中,这不是纯粹的浪费内存单元嘛。
试试看这样:
assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov cx,64
s: mov [bx],bl
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end

题目将详细点,0~63这几个数据在那

不会没有定义数据段吧,data segment
db 0......省略63
data ends
然后 可以 mov ax,data

一个汇编语言的问题,大神请进~


IF (Interrupt enable)——位9,中断许可标志。控制处理器对可屏蔽硬件中断请求的响应。置1 则开启可屏蔽硬件中断响应,置0 则关闭可屏蔽硬件中断响应。
执行int8后,IF标志会由允许中断(EI)变为禁止中断(DI),即由“1”变为“0”。因此,X2XX就变成了X0XX。
CPL、IOPL 和控制寄存器CR4 中的VME 标志决定着IF 标志是否可由CLI、STI、POPF、POPFD 和IRET 指令修改。
如果想了解其它更详细内容,你可在百度搜索一下“X86标志寄存器,以获得更多有用资料。
希望能对你有所帮助。
(以上部分资料摘自己百度相关文档。)

把段名称C,改成CC,就好了。

C,不让用。

一道C语言编程题,求大神们帮帮忙,谢谢了。。
答:include<stdlib.h> include<stdio.h> int main(){ int num;int a;scanf("%d",&num);if(num<0){ printf("非法输入!");} else if(num/10==0){ printf("该数字为一位数!\n");a=1;} else if(num/100==0){ printf("该数字为二位数!\n"); a=2;} else if(num/1000==0)...

有没有代码大神帮忙解决一下c语言的问题,直接上答案,谢谢(c++)
答:【解题思路】三角形这道题,有几个关键点:1.必须先对两个三角形的三个边进行排序,这样才好求比例,不会造成混乱。2.必须判断两个三角形的三个边能否构成三角形,也就是说,大边不能大于等于两个小边的和。比如1,2,3是构不成一个三角形的。3.用三边判断三角形相似时,由于比值可能不是整数...

C语言的代码问题,求大神帮忙看看问题在哪?
答:include <stdio.h>int check(int n){int i,k=0;for(i=2;i<=n/2;i++)if(n%i==0) break;if(i>n/2&&n>1) k=1;return k;}int main(){int i,n;scanf("%d",&n);if(n<=10||n%2) //哥德巴赫猜想。其实对任意不小于4的偶数都成立,而不是10printf("Data error!");else...

...老师只教了一点点,让我们自学,麻烦大神帮帮忙
答:六题,看函数名就知道了。写完才注意到你需要用C语言,但我写的是C++。我也懒得改了,你自己改一下吧,只要把输入输出语句换成C语言的格式就可以了。

C语言中的问题新人麻烦解释一下谢谢
答:选择D scanf中的格式规定为"%d%d%d",眼输入3个十进制数,用空格或是回车等空白符分隔 而题面中使用逗号分隔,导致只有第一个变量x被成功赋值,yz都是无意义的垃圾值,所以结果是不确定值

C语言菜鸟级问题,求大神帮忙~~~
答:include <iostream> void main(){ char a[256];std::cout<<"请输入一个字符串:";std::cin>>a;std::cout<<a<<"的长度为"<<strlen(a)<<std::endl;system("pause");} sizeof获得的是整个数组的大小,如果要获得已存储的大小,要用strlen;你再试试 ...

关于一个c语言程序的问题,大神帮我看一下
答:include <stdio.h>double c[10];int fun(double n){int i;for(i=0;i<10;i++){if(c[i]==n)return i; //找到了,返回下标}return -1; //找不到,返回-1}int main (){int i;for(i=0;i<10;i++){scanf("%lf",&c[i]); //double %lf longfloat}printf("\n");...

求大神帮我解决一下c语言的问题吧
答:其中个位序号为1,十位序号为2,百位序号为3,千位序号为4,若加的结果大于9,则用该数除以10的余数替换,并交换最高位和最低位。要求:编写函数void encode(int x[],int n,int y[]),其中x指向的数组中存放n个不超过4位的正整数 ,加密过的n个正整数保存在y指向的数组中。测试数据:13,...

关于C语言的问题,大神们帮帮忙,拜托了,明天考试了。
答:5 四句语言 ++a是先自加再用a,a++是先用a原值,再自加,因为有一个++a,所以要先加自一次。3. 输出应该是 2 0(注意2和0前面都有两个空格)这个问题一样考察的--的问题 第一次循环执行两次n--,所以输出2,同理,第二次也执行两次,所以n变成了0输出,同时中断循环 ...

易语言编程问题(万分感激!!!)一个简单的小程序遇到问题!
答:.版本 2 .子程序 _编辑框1_内容被改变 .局部变量 个数, 整数型 .局部变量 i, 整数型 .局部变量 匹配文本, 文本型 个数 = 列表框2.取项目数 ().如果 (个数 ≠ 0).判断开始 (编辑框1.内容 = “1”)匹配文本 = “告白气球”.判断 (编辑框1.内容 = “2”) ' 以下加入你需要...