汇编语言-->基础小问题

作者&投稿:蹉群 (若有异议请与网页底部的电邮联系)
汇编语言的一个小问题~

NEG指令是一条单操作数的减法运算指令。
在这条指令中,被减数是0,减数用指令中的操作数给出。

指令 NEG xx 的运算是:(xx)<---- 0 - xx

在减法运算中,进位标志CF用来表示运算的最高位向前的借位。
只有xx为0的时候,减法才不会有向更高位借位。
所以,只要操作数非零,就必定要向前借位,CF必定会在运算后被设为1

首先说三级PC好过,看真题看几道上机就没问题~上机中主要是DI 和SI 还有AX BX CX DX之间的指向啊,变换啊,转移啊,加油


EXTRN LOAD:FAR,SAVE:FAR
N EQU 20
STAC SEGMENT STACK
DB 128 DUP(?)
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP(?)
RESULT DW N DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STAC
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,SOURCE ;数据区起始地址
LEA SI,NAME0 ;原始数据文件名
MOV CX,N ;字节数
CALL LOAD ;从'INPUT1.DAT'中读取数据

这之前都是一样的,重要的是N值,别的就是占空间~

从begin开始比较重要一般开始就是
LEA SI,SOURCE
LEA DI,RESULT
从source读,写入result

地址由系统给好,不用自己设,
L 和H是连续的,先L再H ,其他的是逻辑地址~
需要填写的往往是INC和ADD

最后为了应付眼前,一个一个试试也行调试出来就行~

笔试也重要,好好看明天加油

PS:为什么2个一样的问题呢》呵呵

1.使AL中的高4位取反,低4位不变,执行什么指令?
mov cl,4
shl ax,cl
not ah
shr ax,cl
补充回答:
虽然我的答案也能实现要求的功能,但显繁琐和笨拙。取现1楼和2楼的答案:xor al,0f0h
当时没想到,汗!

2.隐含指示堆栈段中某个数据偏移地址的寄存器是:BP,指示栈顶地址的寄存器是:SP。

3.伪指令BUF DB‘ADBC‘将依次在内存中存入的数据为: 41H,44H,42H,43H,在内存中是这样存放的:41 44 42 43

4.8086的一个最大段能有的字节:65536

5.请设置一个数据MYDATA段,按照如下定义变量:
(1) MY1B为字符串变量:PERSONAL CONPUTER (2) MY2B为用十进制数表示的字节变量:20
MYDATA segment
MY1B db 'PERSONAL CONPUTER'
MY2B db 20
MYDATA ends

1.使AL中的高4位取反,低4位不变,执行什么指令?
xor al,11110000b
或者
xor al,0F0h

2.隐含指示堆栈段中某个数据偏移地址的寄存器是:EBP
指示栈顶地址的寄存器是:ESP

3.伪指令BUF DB‘ABCD‘将依次在内存中存入的数据为:41h,42h,43h,44h
在内存中是这样存放的:41h,42h,43h,44h(字符的ASCII码),以数组形式连续储存

4.8086的一个最大段能有的字节:段寄存器是16位的,(2的16次方-1)=65535

5.请设置一个数据MYDATA段,按照如下定义变量:
(1) MY1B为字符串变量:PERSONAL CONPUTER
(2) MY2B为用十进制数表示的字节变量:20
MYDATA segment
MY1B BYTE 'PERSONAL CONPUTER',0
MY2B BYTE 20
MYDATA ends

第一题应该是
xor al,0f0h


什么是机器语言,汇编语言和高级语言
机器语言是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。机器码有时也被称为原生码(Native Code),这个名词比较强调某种编程语言或库,它与运行平台相关的部份。汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言...

C语言编程--输入5个学生成绩 判断是否及格
include "stdio.h"int main(){ int score;printf("请输入一个成绩:");scanf("%d",&score);if(score>60 && score<=100)printf("成绩合格\\n");else if(score<60 && score>=0)printf("成绩不合格\\n");else printf("输入的成绩有误\\n");} 例如:include<stdio.h> int main(){ int ...

C语言编写--整数的反序数
include <stdio.h> void main( ){ int forder(int n);int n,i,temp,f;f=1;scanf("%d",&n);while(n<1000 || n>9999)scanf("%d",&n);temp=forder(n);for(i=2;i<20;i++){ if (n*i==temp)printf("K=%d,NUM=%d\\n",i,temp),f=0;} if(f)printf("No output");} ...

如何用codeblocks编写c语言
打开CodeBlocks之后,直接在起始页选择:新建工程(create a new project),或者在文件菜单里面选择 新建 工程(Project)这时会出现新建对话框,选择“控制台应用程序”项,按确定(go)接下来选择是用C还是C++ 点下一步,然后就确定工程的位置及文件名等,继续下一步 最后选择编译器和编译生成位置,如果你...

编写C语言程序,把一个数组按从小到大的次序排列起来
源程序以及算法注释如下:define _CRT_SECURE_NO_WARNINGS\/\/VS编译环境需要进行宏定义,VC6.0可忽略 include<stdio.h>\/\/输入输出头文件 int main(){ int number[10], New_number[10];\/\/定义数组的数据类型为整型 int i, j, m, n, k;\/\/定义变量的数据类型为整型 printf("input 10 <int> ...

C语言和汇编语言的区别是什么?
区别如下:(1)两者编译组成不同。汇编语言是将由0、1组成的机器语言用具有简单语义的英文代码表示,而C语言不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等。(2)两者被计算机识别的路径不同。汇编语言通常用于对硬件的直接操控。而且...

用C语言怎样编写一句话
工具\/原料 VC++6.0 电脑 方法\/步骤 1、首先,打开编译器,新建文件。出现的空白处是写代码的。2、输入”#include<stdio.h>“这个为头文件。3、第二行,输入”main“,加上一对”小括号“。4、在main,下方,输入一对大括号 {}。5、在大括号里输入,”printf("Hello,Word\\n");”。6、...

用c语言编一个程序:有10个学生,每个学生的数据包括:学号、姓名、三门...
include<stdio.h> include"stdlib.h" \/\/用于system("pause...");语句 include"math.h" \/\/用于函数7 include"string.h"include"iostream.h" \/\/fflush(stdin);int q=0,p=0;struct stu { char name[100];char cour[10];float score[100];};float f031(struct stu a[]){ float...

C语言—入门技巧大学生推荐
编程语言终究开始引入了函数的概念,即允许程序对代码进行断行。如果已经完成,不再使用goto语句来表示代码的断行。函数调用后,函数将回到下一条指令。 只要看到或想到qoto语句,就会让软件工程师退缩,产生本能 的厌恶。其中一个主要的原因是,一个遍布goto语句的程序会让让人很难抓住重心,不便于对程序的理解和维护 技...

游戏用什么语言编写的?
一般的大型游戏开发不是单一用某一种软件语言的问题。一个大型游戏的开发需要非常大的团队用各种各样的语言和工具来完成。总结一下主要有C\/C++,汇编语言,着色器语言,脚本语言,高效的开发语言C#或Java。首先一般的游戏开发架构(Windows平台)从底到顶一般是DirectX™——游戏引擎——游戏。大型...

芝山区15175137152: 几个简单的汇编语言问题 -
邢雅亚伯: 1.判断下列汇编语句的正确性并说明原因 MOV [AX],BH ;错,AX不能加方括号来访问地址 MOV [SP],AX ;错,SP不能加方括号 OUT 10H,CL ;错,OUT指令中源操作数只能是AX或AL CMP 36H,AL ;错,CMP指令中目的操作数不能为立即数...

芝山区15175137152: 汇编语言 -- >基础小问题 -
邢雅亚伯: 1.使AL中的高4位取反,低4位不变,执行什么指令?mov cl,4 shl ax,cl not ah shr ax,cl 补充回答:虽然我的答案也能实现要求的功能,但显繁琐和笨拙.取现1楼和2楼的答案:xor al,0f0h 当时没想到,汗!2.隐含指示堆栈段中某个数据偏移地址的...

芝山区15175137152: 请教高手——汇编语言基础问题
邢雅亚伯:首先,你应该明白,你说的逻辑右移算术右移 和循环右移 除了都是右移以外并没有什么太大的关系 所谓循环右移是将一个数位的最后一位移到第一位 它的功能:比如你想让一组小灯逐个亮,那么你可将(比如数1000000)右移并输出,那样它就逐个亮了 带进位循环,就是在向左或右循环时带上C一块循环 因为一些指令的操作回影响标志位(如C),那样的话带上C一块循环就能实现一些特殊一点的功能了 具体的就是要看你要做什么了

芝山区15175137152: 汇编语言的基础问题?
邢雅亚伯: 一、寄存器存在于CPU中,速度很快,数量有限; 存储器就是内存,速度相对寄存器稍慢; 计算机做运算时,先将数据读入寄存器再进行运算.二、寄存器中可存立即数,可存地址, 三、为什么要叫寄存器?寄存器里的数据一般会频繁更新和运算,且只是暂存. 四、表示指令中操作数所在的方法称为寻址方式.可以这样理解,立即寻址是不需要进行计算的,直接去立即数表示的内存地址存储就可以. 变址,是指地址需要进行计算得出的,比如要根据一个相对不变的基址再加上偏移量.

芝山区15175137152: 汇编语言基础问题 -
邢雅亚伯: 首先要了解的是CPU要处理的数据是存在内存中的,当CPU要处理某些数据时首先要将数据从内存中读取到CPU的寄存器中.内存的结构是以8个位(bit)为一个单元,由许多这样的单元组成了内存.就像一栋大楼是有许多个房间组成,每个房...

芝山区15175137152: 汇编语言基本问题
邢雅亚伯: XXX是NUM的地址,或者说指针. AX的内容是0915H,是NUM中的内容.

芝山区15175137152: 汇编语言新手问题 -
邢雅亚伯: ① MOV AX,0BAH ;立即数寻址,SA=指令地址+1 ② MOV AX,[100H] ;直接寻址,SA=20100H ③ MOV AX,VAL ;直接寻址,SA=20050H ④ MOV AX,ES:[BX] ;基址寻址,SA=21100H ⑤ MOV AX,[BP] ;基址寻址,SA=15100H ⑥ MOV AX,BP ;寄存器寻址 ⑦ MOV AX,VAL[SI] ;相对变址寻址,SA=200F0H ⑧ MOV AX,VAL[BX][SI] ;相对基址加变址寻址,SA=201F0H

芝山区15175137152: 汇编语言编程中的一个基本 问题 -
邢雅亚伯: 数据可以在内存中处理,也可以在CPU内部处理,当然这必须视具体问题而定,比如有些指令不支持在内存中处理.一般情况下在CPU内部处理速度较快.

芝山区15175137152: 初学者学汇编语言的困惑
邢雅亚伯: 你的问题很多,我只能回答一部分,满不满意就看你了,呵呵. 1、汇编教程的问题,英文版的不大清楚那本比较经典,但是汉语版绝对是清华大学的《IBM-PC 汇编语言程序设计》最经典,几乎所有国内的名牌大学都用这个教材 2、其实初学汇编到不是很在乎微机原理的基础,因为汇编教材中都会有所介绍,只要认真学习汇编语言的教材,从零开始也是没问题的 3、至于汇编语言编译器的问题,那当然是微软的MASM6.0,大部分汇编程序员的选择

芝山区15175137152: 几个关于汇编语言的问题 急用 谢谢 -
邢雅亚伯: 1.loop循环功能应配合哪个缓存器 CX寄存器 LOOP指令,是循环指令,循环次数由计数寄存器CX指定.是否执行循环体的判断指令在循环体之后,所以,至少执行1次循环体,即至少循环1次.执行LOOP指令时,CPU自动将CX的值减1,若...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网