首页 汇编语言期末总结(地大)

汇编语言期末总结(地大)

举报
开通vip

汇编语言期末总结(地大)复习与总结中国地质大学(武汉)计算机学院汇编语言寄存器* 寄存器 说明 AX 作为累加器用,所以它是算术运算的主要寄存器。在乘除指令中指定用来存放操作数。另外,所有的I/O指令都使用AX或AL与外部设备传送信息。 BX 在计算存储器地址时,可作为基址寄存器使用。 CX 常用来保存计数值,如在移位指令、循环指令和串处理指令中用作隐含的计数器 DX 在作双字长运算时,可把DX和AX组合在一起存放一个双字长数,DX用来存放高16位数据。此外,对某些I/O操作,DX可用来存放I/O的端口地址寄存器* 寄存器 名称 说明 C...

汇编语言期末总结(地大)
复习与 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 中国地质大学(武汉)计算机学院汇编语言寄存器* 寄存器 说明 AX 作为累加器用,所以它是算术运算的主要寄存器。在乘除指令中指定用来存放操作数。另外,所有的I/O指令都使用AX或AL与外部设备传送信息。 BX 在计算存储器地址时,可作为基址寄存器使用。 CX 常用来保存计数值,如在移位指令、循环指令和串处理指令中用作隐含的计数器 DX 在作双字长运算时,可把DX和AX组合在一起存放一个双字长数,DX用来存放高16位数据。此外,对某些I/O操作,DX可用来存放I/O的端口地址寄存器* 寄存器 名称 说明 CS 代码段寄存器 存放当前执行的程序的段地址 DS 数据段寄存器 存放当前执行的程序所用操作数的段地址 SS 堆栈段寄存器 存放当前执行的程序所用堆栈的段地址 ES 附加段寄存器 存放当前执行程序中一个辅助数据段的段地址寄存器【SP、BP、SI、DI】四个16位寄存器可以象数据寄存器一样在运算过程中存放操作数,但它们只能以字(16位)为单位使用。此外,它们更经常的用途是在存储器寻址时,提供偏移地址。因此,它们可称为指针或变址寄存器。* 寄存器 名称 说明 SP 堆栈指针寄存器 用来指出栈顶的偏移地址 BP 基址指针寄存器 在寻址时作为基地址寄存器使用,但它必须与堆栈段寄存器SS联用来确定堆栈段中的存储单元地址 SI 源变址寄存器 在串处理指令中,SI作为隐含的源变址寄存器与DS联用,以确定数据段中的存储单元地址,并有自动增量和自动减量的变址功能 DI 目的变址寄存器 在串处理指令中,DI和附加段寄存器ES联用,以达到在附加段中寻址的目的,然后DI自动增量或减量寄存器* 寄存器 名称 说明 IP 指令指针寄存器 它用来存放将要执行的下一条指令地址的偏移量,它与段寄存器【CS】联合形成代码段中指令的物理地址。在计算机中,控制程序的执行流程就是通过控制IP的值来实现的 FLAGS 标志寄存器 这是一个存放条件码标志、控制标志的16位寄存器标志寄存器* 标志位 名称 说明   Debug1 Debug0 ZF 零标志位/ZeroFlag 指令执行后,结果是否为0?1:0 sub,mul,add,divinc,or,and ZR NZ PF 奇偶标志位/ParityFlag 指令执行后,结果的bit位中,1的个数是否为偶数?1:0 PE PO SF 符号标志位/SignFlag 指令执行后,结果是否为负?1:0 NG PL CF 进位标志位/CarryFlag 无符号运算时,记录运算结果的最高有效位向更高位的进位值,或从更高位的借位值 CY NC OF 溢出标志位/OverflowFlag 有符号运算时,运算结果是否发生溢出?1:0 OV NV DF 方向标志位/DirectionFlag 0-串处理指令时,si,di递增1-串处理指令时,si,di递减 此标志位要与movsb,movsw配合使用,指明每次循环后si,di的增减 AF 辅助进位标志/AuxiliaryCarryFlag 运算时D3位(低半字节)有进位或借位时,AF=1;否则AF=0。如:49H+6DH=B6H,D3有进位:AF=1 TF 跟踪标志/TraceFlag 用于控制处理器进入单步跟踪方式:0-禁止进入单步中断跟踪,处理器正常工作1-允许进入单步中断跟踪,处理器单步执行,跟踪指令执行 IF 中断标志/InterruptFlag 用于控制外部可屏蔽中断是否可以被处理器响应:设置IF=1,则允许可屏蔽中断;设置IF=0,则禁止可屏蔽中断。DEBUG-U:查看汇编指令【-U1000:0】-R:查看、修改寄存器的值【-RAX】修改寄存器AX的值-T:执行命令-D:查看内存【-D段地址:偏移地址】如:【-D1000:0】【-D1000:09】-E:改写内存【-E段地址:偏移地址数据…】如:【-E1000:012345】【-E1000:0‘a’‘b’‘c’】【-E1000:0“welcommasm”】-A:写汇编指令到内存【-A1000:0】movax,111……….*对内存单元的操作如果未指定寄存器,对内存单元的操作采用以下形式:【1】wordptr指定访问的内存单元为字单元,如:movwordptrds:[0]1incwordptr[bx]incwordptrds:[0]addwordptr[bx],2【2】byteptr指定访问的内存单元为字节单元,如:movbyteptrds:[0]1incbyteptr[bx]incbyteptrds:[0]addbyteptr[bx],2*寻址方式*定义数据* db dd1dd‘a’db'asdfghjk' 定义字节型数据,并初始化,占1个字节 dw dw1dw0123h,0234h 定义字型数据,并初始化,占2个字节 dd dd1dd0123h,0234h 定义双字型数据,并初始化,占4个字节 dup db3dup(0) 【db0,0,0】定义3个字节,都初始化为0 db3dup(1,2,3) 【db1,2,3,1,2,3,1,2,3】定义9个字节 db3dup(‘abc’,‘ABC’) 【db‘abcABCabcABCabcABC’】定义18个字节 db重复次数dup(重复的数据) 重复的数据可以为db,也可以为dw,dd直接定址 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 像这种可以通过依据数据,直接计算出所要找的元素的位置的表,我们称其为:直接定址表。 tabledb'0123456789ABCDEF' ;字符表 moval,table[bx] ;标号+下标*直接定址表assumecs:codecodesegmentadb1,2,3,4,5,6,7,8bdw0start:movsi,0movcx,8s:moval,a[si]movah,0addb,axincsiloopsmovax,4c00hint21hcodeendsendstart*assumecs:codecodesegmenta:db1,2,3,4,5,6,7,8b:dw0start:movsi,offsetamovbx,offsetbmovcx,8s:moval,cs:[si]movah,0addcs:[bx],axincsiloopsmovax,4c00hint21hcodeendsendstart直接定址表 对于程序中的adb1,2,3,4,5,6,7,8 指令:moval,a[si] 相当于:moval,cs:0[si] 指令:moval,a[3] 相当于:moval,cs:0[3] 指令:moval,a[bx+si+3] 相当于:moval,cs:0[bx+si+3]*直接定址表 数据标号包含了对单元长度的描述,所以,在指令中,它可以代表一个段中的内存单元。 对于程序中的bdw0。 指令:movax,b相当于:movax,cs:[8] 指令:movb,2相当于:movwordptrcs:[8],2 指令:incb相当于:incwordptrcs:[8] 在这些指令中,标号b代表了一个内存单元,地址为code:8,长度为2字节。*直接定址表(用于子函数地址入口)setscreen:;ah–子功能号,0-sub1,1-sub2,2-sub3,3-sub4jmpshortsettabledwsub1,sub2,sub3,sub4set: pushbx cmpah,3 ;判断传递的子功能号是否大于3 jasret movbl,ah movbh,0 addbx,bx;根据ah中的功能号计算对应子程序的地址在table表中的偏移 callwordptrtable[bx] ;调用对应的功能子程序sret: popbx iret*直接定址表(用于子函数地址入口) 另一种子程序跳转实现方式:ah–子功能号*setscreen: cmpah,0 jedo1 cmpah,1 jedo2 cmpah,2 jedo3 cmpah,3 jedo4 jmpshortsretdo1: callsub1 jmpshortsretdo2: callsub2 jmpshortsretdo3: callsub3 jmpshortsretdo4: callsub4sret: iretjmp指令* jmp jmpax 目标地址跳转 将IP设为ax jmpshorts0 位移跳转 【(IP)=标号s0所在8位偏移】跳转到标号s0处,即将IP设为标号s0所在地址,IP修改范围-128~127,短转移 jmpnearptrs0 位移跳转段内转移 【(IP)=标号s0所在16位偏移】段内近转移,跳转到标号s0处,即将IP设为标号s0所在地址,IP修改范围-32768~32767, jmpfarptrs0 目标地址跳转段间转移 【(CS)=标号s0所在段,(IP)=标号s0所在16位偏移】段间远转移,跳转到标号s0处,即将同时修改CS和IP,设为标号s0所在的段和偏移地址,IP修改范围-32768~32767, jmpwordptrds:[10] 目标地址跳转段内转移 【(IP)=(16*(ds)+10)】段内转移,将IP设为指定内存数据 jmpdwordptrds:[10] 目标地址跳转段间转移 【(CS)=(16*(ds)+10+2),(IP)=(16*(ds)+10)】段间转移,IP设为ds:[10],CS设为ds:[12]call与ret* call calls0 【PushIP,jmpnearptrs0】将IP压栈,跳转到标号处,此跳转为段内转移 callax 【PushIP,jmpax】将IP压栈,IP设为ax,段内转移 callwordptrds:[0] 【PushIP,jmpwordptrds:[0]】将IP压栈,IP设为ds:[0],段内转移 calldwordptrds:[0] 【PushCS,PushIP,jmpdwordptrds:[0]】将CS、IP压栈后,段间转移,IP设为ds:[0],CS设为ds:[2] callfarptrs0 【PushCS,PushIP,jmpfatptrs0】将CS、IP压栈,跳转到标号处,远转移、段间转移 ret ret 【popIP】利用栈中的数据,实现近转移 retN 【popIP,addsp,N】利用栈中的数据,实现近转移,同时,将栈顶下移N个内存单元,一般用于函数调用时,如果采用栈传递参数,返回时,需要将传入的参数清空,可采用此语法 retf retf 【popIP,popCS】利用栈中的数据,实现远转移 iret iret 【popIP,popCS,popf】利用栈中的数据,实现远转移,用于中断例程的返回子程序框架:call和ret的配合使用 子程序的框架:标号:指令ret 具有子程序的源程序的框架:*子程序参数的传递 寄存器:适用于参数少时。 变量:适用于同一源文件(程序模块)中。 堆栈:只适用于传递入口参数。 通过地址表传送参数地址*通过栈传递参数movax,0123hpushaxmovax,0456hpushaxcalladdfun……………….addfun: pushbp movbp,sp movax,[bp+4] addax,[bp+6] popbp ret4*计算0123h与0456h的和参数一,入栈参数二,入栈call时,会有pushIP的调用备份bp,此时栈里已有四个数据通过bp取参数,默认段为:ssax=?ax=?描述:popIPaddsp,4寄存器冲突的解决 子程序 多重循环 …… pushcx …… popcx*seg,offset* offset movax,offsets0 取得标号s0的偏移地址 movax,offsets2-s1 取得标号s2与s1的偏移地址差值 seg movax,segs0 获取标号s0所在段地址 jcxz jcxzs0 【if((cx)==0)jmpshorts0】有条件短转移指令,IP修改范围-128~127 loop loops0 【cx--;if((cx)!=0)jmpshorts0】循环指令,IP修改范围-128~127其他指令* adc abcax,bx 【ax+bx+CF】带进位加法 sbb sbbax,bx 【ax-bx-CF】带借位减法 cmp cmpax,bx 计算ax-bx,根据计算结果修改标志寄存器,影响到的标志寄存器:ZF,PF,SF,CF,OF cld cld 将方向标志位DF设置为0–即movsb时,si,di为递增 std std 将方向标志位DF设置为1–即movsb时,si,di为递减 cli cli 将中断标志位IF设置为0–禁止可屏蔽中断 sti sti 将中断标志位IF设置为1–打开可屏蔽中断其他指令* in inal,20h 8位 从20h端口读入一个字节 movdx,3f8hinal,dx 16位 从3f8h端口读入一个字节 out out20h,al 8位 向20h端口写入一个字节 movdx,3f8houtdx,al 16位 向3f8h端口写入一个字节 shl shlal,1   逻辑左移:数据向左1移位,低位补充0,最后移出的一位写入CF movcl,3shlal,cl 错误:shlal,3 逻辑左移:数据向左3移位,低位补充0,最后移出的一位写入CF shr shral,1   逻辑右移:数据向右1移位,高位补充0,最后移出的一位写入CF movcl,3shral,cl 错误:shral,3 逻辑右移:数据向右3移位,高位补充0,最后移出的一位写入CFadc,sbb* adc abcax,bx 【ax+bx+CF】带进位加法 sbb sbbax,bx 【ax-bx-CF】带借位减法adc指令 程序代码1EF0001000H+2010001EF0Haxbxcx movax,001EH movbx,0F000H movcx,1000H addcx,1EF0H adcbx,1000H adcax,0020H*sbb指令 比如,计算003E1000H–00202000H 结果放在ax,bx中,程序如下: movbx,1000H movax,003EH subbx,2000H sbbax,0020H**mul指令* 指令 位 被乘数 乘数 积 mulbl 8位 al bl ax mulbx 16位 ax bx ax(低位),dx(高位) mulbyteptrds:[0] 8位 al ds:[0] ax mulwordptres:[0] 16位 ax es:[0] ax(低位),dx(高位)div指令* 指令 位 被除数 除数 商 余数 divbl 8位 ax bl al ah divbx 16位 ax(低位),dx(高位) bx ax dx divbyteptrds:[0] 8位 ax ds:[0] al ah divwordptres:[0] 16位 ax(低位),dx(高位) es:[0] ax dxcmp指令:cmpax,bx* 无符号运算 有符号运算 标志寄存器 比较结果 标志寄存器 比较结果 ZF=1 ax=bx ZF=1 ax=bx ZF=0 ax!=bx ZF=0 ax!=bx CF=1 ax<bx SF=1且OF=0 ax<bx CF=0 ax>=bx SF=1且OF=1 ax>bx CF=0且ZF=0 ax>bx SF=0且OF=1 ax<bx CF=1或ZF=1 ax<=bx SF=0且OF=0 ax>=bx条件转移指令(无符号数比较,与cmp配合使用)*cmpax,bx 指令 比较结果 含义 检测的标志位 je ax=bx 等于则转移equal ZF=1 jne ax!=bx 不等于则转移notequal ZF=0 jb ax<bx 低于则转移below CF=1 jnb ax>=bx 不低于则转移notbelow CF=0 ja ax>bx 高于则转移above CF=0且ZF=0 jna ax<=bx 不高于则转移notabove CF=1或ZF=1movsb、movsw指令(1)rep 【描述】s:movsbloops 【说明】此指令需配合movsb、movsw使用。 (2)movsb【功能】将ds:si指向的内存单元中的字节送入es:di中,然后根据标志寄存器DF位的值,将si和di递增或递减【描述】(es*16+di)=(ds*16+si)if(df==0){incsi;incdi;}elseif(df==1){decsi;decdi;}【使用】repmovsb*movsb、movsw指令(3)movsw【功能】将ds:si指向的内存单元中的字节送入es:di中,然后根据标志寄存器DF位的值,将si和di递增或递减【描述】(es*16+di)=(ds*16+si)if(df==0){addsi,2;adddi,2;}elseif(df==1){subsi,2;subdi,2;}【使用】repmovsw(4)标志寄存器DF值的设定【cld】:将DF位置设定为0【std】:将DF位置设定为1*movsb、movsw指令 (5)实例* ;源程序段:ds:si=DispStringmovax,csmovds,ax ;源数据区段地址:dsmovsi,offsetDispString ;目标地址:es:di=0:200movax,0moves,axmovdi,200h ;长度:cx=DispString子函数的长度movcx,offsetDispStringEnd-offsetDispStringcld ;DF为0-传输方向为正,di,si递增repmovsb显示字符 显示缓冲区:B8000H–BFFFFH(32K) 共分为8页,第页4K左右,默认显示第0页,即地址为B8000H–B8F9FH的内存(4000字节) 显示器:80行,25列 往指定内存传送数据,会显示在屏幕上 一个字符占两个字节低位:ASCII码高位:字符属性*显示字符 高位:字符属性* 红底绿字:01000010B 红底闪烁绿字:11000010B 红底高亮绿字:01001010B 黑底白字:00000111B 白底蓝字:01110001B 7 6 5 4 3 2 1 0 BL R G B I R G B 是否闪烁 字符背景色(RGB) 是否高亮 字符颜色(RGB)12.3中断向量表 对于8086PC机,中断向量表指定放在内存地址0处。从内存0000:0000到0000:03FF的1024个单元中存放着中断向量表。 我们可以用中断类型码,在中断向量表中找到中断处理程序的入口。然后用它设置CS和IP,使CPU执行中断处理程序。 中断号:N,则中断例程的入口地址在中断向量表中可以这样获取:IP=N*4,CS=N*4+2**中断执行步骤*中断执行的步骤如下:【1】取得中断类型码N【2】pushf【3】IF=0,IF=0,禁止可屏蔽中断,禁止单步中断【4】pushCS【5】pushIP【6】IP=N*4,CS=N*4+2,中断例程的跳转,设定CS,IP TF 跟踪标志/TraceFlag 用于控制处理器进入单步跟踪方式:0-禁止进入单步中断跟踪,处理器正常工作1-允许进入单步中断跟踪,处理器单步执行,跟踪指令执行 IF 中断标志/InterruptFlag 用于控制外部可屏蔽中断是否可以被处理器响应:设置IF=1,则允许可屏蔽中断;设置IF=0,则禁止可屏蔽中断。*assumecs:codecodesegmentstart: movax,cs movds,ax movsi,offsetdo0 ;设置ds:si指向源地址 movax,0 moves,ax movdi,200h ;设置es:di指向目的地址 movcx,offsetdo0end-offsetdo0;设置cx为传输长度 cld ;设置传输方向为正 repmovsb ;设置中断向量表movax,0moves,axmovwordptres:[0*4],200hmovwordptres:[0*4+2],0 movax,4c00h int21h*do0: jmpshortdo0start db"overflow!"do0start: movax,segdo0;获取标号所在段地址 movds,ax movsi,offsetdo0;获取标号所在段的偏移地址 addsi,2 ;去除前面的jmp指令;设置ds:si指向字符串 movax,0b800h moves,ax movdi,12*160+36*2 ;设置es:di指向显存空间的中间位置movcx,9 ;设置cx为字符串长度s: moval,[si] moves:[di],al incsi adddi,2 loops movax,4c00h int21hdo0end:nopcodeendsendstartBIOS中断例程应用 int10h中断例程的设置光标位置功能。 movah,2 ;2号功能 movbh,0 ;页数 movdh,5 ;第5行 movdl,12 ;第12列 int10h ;10号中断调用*DOS中断例程应用 编程:在屏幕的5列12行显示字符串“Welcometomasm!”。*assumecs:codedatasegmentdb'Welcometomasm!','$'dataendscodesegmentstart: movah,2;置光标 movbh,0 ;第0页 movdh,5 ;dh中放行号 movdl,12;dl中放列号 int10h movax,data movds,ax movdx,0 ;ds:dx指向字符串的首地址data:0 movah,9 int21h movax,4c00h int21hcodeendsendstart端口*CMOS端口访问首先,需要将要访问的端口地址,发送到70h端口,然后,再从71h端口读出要访问的数据内容。 in inal,20h 8位 从20h端口读入一个字节 movdx,3f8hinal,dx 16位 从3f8h端口读入一个字节 out out20h,al 8位 向20h端口写入一个字节 movdx,3f8houtdx,al 16位 向3f8h端口写入一个字节 moval,2 ;端口号为70h中的2号单元 out70h,al ;单元号要先写入到70端口 inal,71h ;从71端口读取2号单元的数据,赋给alBCD码 BCD码的存放方式:数码:01234BCD码:00000001001000110100数码:56789BCD码:01010110011110001001 比如: 数值26,用BCD码表示为:00100110*键盘消息接收*中断16的0号功能:从键盘接收一个字符 movah,0int16h ;中断16的零号功能,获取键盘上的一个字符cmpal,'1'jefun0文件读写(21h)* AH 功能 入口参数 出口参数 3C 建立文件 DS:DX=ASCIIZ串地址CX=文件属性 成功:AX=文件代号错误:AX=错误码 3D 打开文件  DS:DX=ASCIIZ串地址AL=0读, =1写, =3读/写 成功:AX=文件代号错误:AX=错误码  3E 关闭文件 BX=文件代号 失败:AX=错误码 3F 读文件或设备  DS:DX=数据缓冲区地址BX=文件代号CX=读取的字节数 读成功: AX=实际读入的字节数 AX=0已到文件尾读出错:AX=错误码 40 写文件或设备  DS:DX=数据缓冲区地址BX=文件代号CX=写入的字节数 写成功: AX=实际写入的字节数写出错:AX=错误码 41 删除文件 DS:DX=ASCIIZ串地址 成功:AX=00出错:AX=错误码(2,5) 42 移动文件指针  BX=文件代号,CX:DX=位移量AL=移动方式(0:从文件头绝对位移,1:从当前位置相对移动,2:从文件尾绝对位移) 成功:DX:AX=新文件指针位置出错:AX=错误码文件读写assumecs:codeseg,ds:datas,ss:stkstksegmentstackdb128dup(0)stkendsdatassegmentstrdatadb'1234567890qwertyuiopasdfghjklzxcvbnm~!@#%^&*()_+=-[]}{/.,<>MZNXBCVALSKDJFHGYTURIEOWPQ'tgtdatadb256dup('$')filenamedb'f:\asm.dat',0datasends*文件读写codesegsegmentstart: ;设置栈段 movax,stk movss,ax movsp,128 callCreateFile callWriteFile callReadFile* movax,segtgtdata movds,ax movsi,offsettgtdata movbl,01000001b movdh,5 movdl,8 callDisplayStringInDefinePos movax,4c00h int21h创建文件;子函数创建文件CreateFile: pushax pushbx pushcx pushdx pushds ;创建文件 movcx,0 ;文件属性 movdx,segfilename movds,dx * movdx,offsetfilename movah,3ch ;3c号功能,创建文件 int21h ;返回:ax-文件代号 ;关闭文件 ;movbx,ax ;文件代号 ;movah,3eh ;关闭 ;int21h popds popdx popcx popbx popax ret将数据写入文件;子函数写入字符串到文件中WriteFile: pushax pushbx pushcx pushdx pushds ;打开文件 movdx,segfilename movds,dx movdx,offsetfilename movah,3dh;4d号功能,打开文件 moval,3 ;0-读,1-写,3-读/写 int21h;ax-返回的文件代号 movbx,ax ;文件代号放在bx中 * ;往文件中写数据 movdx,segstrdata movds,dx movdx,offsetstrdata movcx,85 ;要写的数据长度,字节数;源数据区共有85个字符 ;movbx,ax;文件代号,已放在bx movah,40h;写文件 int21h ;关闭文件 ;movbx,ax;文件代号,已放在bx movah,3eh;关闭 int21h popds popdx popcx popbx popax ret从文件中读取数据;子函数从文件中,读取字符串ReadFile: pushax pushbx pushcx pushds ;打开文件 movcx,0 ;文件属性 movdx,segfilename movds,dx movdx,offsetfilename movah,3dh;4d号功能,打开文件 moval,3 ;0-读,1-写,3-读/写 int21h ;ax-返回的文件代号 movbx,ax ;文件代号放在bx中 ;从文件中读取数据,读到目标区tgtdata中ds:dx * movdx,segtgtdata movds,dx movdx,offsettgtdata movcx,256;要读取的数据长度,字节数 ;movbx,ax;文件代号,已放在bx movah,3fh;读文件 int21h ;关闭文件 ;movbx,ax;文件代号,已放在bx movah,3eh;关闭 int21h popds popcx popbx popax ret将读取到的数据显示在屏幕上;子函数dispString:在指定的地方显示字符串;参数:dh-行号,dl-列号,bl-颜色;ds:[si]-字符串入口,以$为结束符DisplayStringInDefinePos: pushf pushax pushbx pushcx pushdx pushsi pushdi pushes ;根据要输出的位置,计算目标区在内存中的地址,放到di中 moval,160 muldh movdi,ax ;乘法di=dhx160,结果在ax中,传到di中*moval,2muldl ;乘法ax=dlx2,结果在ax中adddi,ax ;计算输出的位置:di=dh*160+dl*2movax,0B800h;显存第0页起始地址moves,ax ;设定显存的段;从ds:[si]依次取字符,以cl为中转DSIDF0:movbh,[si] cmpbh,'$'jeDSIDF1 ;如果字符为$,则不输出moves:[di],bh;在dh行,dl列,输出字符moves:[di+1],bl ;用bl设定颜色adddi,2incsicmpbh,'$'jneDSIDF0 将读取到的数据显示在屏幕上 DSIDF1:popes popdi popsi popdx popcx popbx popax popfretcodesegendsendstart* 各学院(课部)、全体师生: 根据校长办公室《关于2013年“五一”放假安排及作息时间调整的通知》要求,结合我校本科生课程考试安排的实际情况,现将本科生课程考试时间作如下调整: 将2013年4月27日(星期六)的课程考试调至2013年4月29日(星期一)进行,将2013年4月28日(星期日)的课程考试调至2013年4月30日(星期二)进行,考试地点不变。请各学院(课部)全体师生遵照执行。 特此通知。* 考试时间:2013年4月27日9:00-11:00 考试地点:教一楼302,303 答疑时间:4月27日上午10-12点,下午3-5点,晚上7:30-9:30 答疑地点:北一楼113 单选,填空,简答,程序分析,程序题***
本文档为【汇编语言期末总结(地大)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
Nobita
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:
上传时间:2020-09-01
浏览量:0