汇编语言proc near(汇编语言小题一个,感激不尽)

2024-10-24 03:45:06 0

汇编语言proc near(汇编语言小题一个,感激不尽)

其实汇编语言proc near的问题并不复杂,但是又很多的朋友都不太了解汇编语言小题一个,感激不尽,因此呢,今天小编就来为大家分享汇编语言proc near的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

汇编语言小题一个,感激不尽

;如果在dos下编译,将中文注释删除后进行。data segment   str1 db ’abcdefghijklmn........’,0h,’other string, useless’   str2 db ’def’,0h,’other string’   len1 dw 0   len2 dw 0   lastpos  dw 0   msg0 db ’found it, position at :’,’$’   msg1 db ’not found.$’   pos   dw  0   found db 0data endsassume cs:code, ds:data, es:datacode segmentstart:   mov ax, data   mov ds, ax   mov es, ax   ;计算str1长度   lea si, str1,   lea di, len1   call strlen   ;计算str2长度   lea si, str2,   lea di, len2   call strlen   ;计算str1最大可查找position   mov ax, offset str1   mov bx, ax    ;bx保存查找起始位置   add ax, len1   sub ax, len2   inc ax   mov lastpos, ax ;当查找从这里开始时,就表示不可能匹配上了,因为剩余字符串长度不够   ;开始查找   cld  ;设置查找方向为增向search0:   mov cx, len2   mov si, bx   lea di, str2   repe cmpsb   jz  found0 ;zf为0,表示找到   inc bx   cmp bx, lastpos   jnz search0   ;执行到这里,表示未找到   lea dx, msg1   mov ah, 9   int 21h   jmp exitfound0:      mov found, 0ffh ;把这2个要求忘掉了。      mov pos bx     ;      ;输出(bx),即在str1中的首地址   lea dx, msg0   mov ah, 9   int 21h   mov ax, bx   call printexit:   mov ax, 4c00h   int 21h;计算指向的字符串的长度;0为字符串结束符号;保存计算结果,dw类型strlen proc near   mov , 0strlen0:   cmp , 0   jz strlen1   inc    inc si   jmp strlen0strlen1:   retstrlen endp;10进制输出(ax)中的数值print proc near  push cx  push bx  xor cx, cx  mov bx, 10p0:  xor dx, dx  div bx  xor dx, 0e30h  push dx  inc cx  cmp ax, 0  jnz p0p1:  pop ax  int 10h  loop p1    pop bx  pop cx  retprint endpcode endsend start

汇编语言的 注释啊啊 ,追加的

代码有点小问题,改动了一点点后,执行结果是将代码段中的256个值为55的数分别改为:0,1,2,3,4,……一直到255(十六进制为FF),如下:

data segment;数据段Block db 256 dup(55h);申请首地址为block的256个字节地址空间,每个字节的值均为55h

data endscode segment;代码段assume cs:code, ds:datastart procnear;程序开始,将之改成“start:”mov ax, datamov ds, ax;这两句的意思是将数据段地址赋给dsmov bx, offset Block;将首地址block的值赋给bxmov cx,256;设置cx的值,即为循环次数256次Again:  ;自定义的标号mov , bl ;将bl的值存入bx所指向的数据段中inc bx;bx自加1,相当于C语言中的C++Loop Again;此步是CX-1到CX=0,即循环256次后跳出循环jmp $;跳转到当前的地址, 所以它是一个死循环,相当于在此原地踏步。如果要让它能正常结束,应该将这句改为“mov ah,4ch   int 21h”两句

code endsend start

微机原理题:汇编语言编写的子程序中最后一条汇编语句是什么

汇编语言子程序以proc语句行开始,以endp语句行结束。如:p1 proc near(或far)..........................p1 endp

NEAR的汇编语言

在汇编语言中,NEAR是指近过程调用,即子程序和主程序在一个代码段,则使用NEAR(可省略)。近调用发生后,主程序堆栈中将压入IP值保护起来。请对比FAR远过程调用。使用范例: SUB1 PROC NEAR; 调用在同一代码段内的子程序SUB1

用汇编语言编下列两题,高分!急求!!

1、7个评委分别给出10~20之间的整数分,去掉一个最高和最低分,剩余5个求平均分。要求:评委给出两位的十进制数从键盘输入,最后得分以十进制输出显示在屏幕,设计显示格式。 ; 本程序通过编译,运行正确 Code Segment Assume CS:Code,DS:Code CR EQU 000DH LF EQU 000AH KBBack EQU 0008H ; ----------------------------------------- ; 功能:输出一个字符 ; 入口:dl=要显示的字符 enter_Chr proc Near push ax mov ah,02h int 21h pop ax ret enter_Chr endp ; ----------------------------------------- ; 功能:显示指定地址(Str_Addr)的字符串 ; 入口: ; Str_Addr=字符串地址(要求在数据段) ; 用法: Output Str_Addr ; 用法举例:Output PromptStr Output MACRO Str_Addr lea dx,Str_Addr mov ah,9 int 21h EndM ; ----------------------------------------- ; 功能:取光标位置 ; 入口:无 ; 出口:DH=行号,DL=列号 GetCursor Proc Near PUSH AX PUSH BX PUSH CX XOR BX,BX MOV AH,3 INT 10H MOV Cursor_Row,DH MOV Cursor_Col,DL POP CX POP BX POP AX RET Cursor_Row DB ? Cursor_Col DB ? GetCursor EndP ; ----------------------------------------- ; 功能:置光标位置 ; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标) SetCursor Proc Near PUSH CX PUSH BX PUSH AX MOV DH,Cursor_Row MOV DL,Cursor_Col XOR BX,BX MOV AH,2 INT 10H POP AX POP BX POP CX RET SetCursor EndP ; ----------------------------------------- ; 功能:输出回车换行 enter_CTLF proc Near push ax push dx mov ah,02h mov dl,0dh int 21h mov dl,0ah int 21h pop dx pop ax ret enter_CTLF endp ; ----------------------------------------- ; 功能:键盘输入一个N位的十进制数字, ; 用逻辑和移位指令将其转换成二进制数并保存在指定的内存单元。 ; 入口:N=数字位数;di=保存输入的数字首地址 ; 出口:转换后的二进制数保存在di所指的单元 Input_Digit Proc Near push dx push cx push bx push di lea di,@@Save_Tmp push di cld mov cx,N push cx @@Input: call GetCursor ;取光标位置 mov ah,1 ;从键盘接受一个字符 int 21h cmp al,CR ;若键入的是回车,已经键入的数字不足N位 jz @@ASC_Dec ;转去处理已经键入的数字 cmp al,KBBack jz @@KB_Back ;若是回空键,重新输入 cmp al,’0’ jb @@KBBack ;若低于数字’0’,重新输入 cmp al,’9’ ja @@KBBack ;若低于数字’9’,重新输入 jmp @@Save_Dig @@KB_Back: dec Cursor_Col inc cx dec di @@KBBack: call SetCursor ;置光标位置 jmp @@Input @@Save_Dig: and al,0fh ;转换成二进制数 stosb ;保存 loop @@Input ;接受下一个数字 @@ASC_Dec: mov ax,cx pop cx pop si sub cx,ax ;实际输入的数字位数 xor dx,dx xor ax,ax jcxz @@Save_Ret ;若直接回车,没有输入任何数字,按输入’0’处理 dec cx ;实际输入的数字位数减1,准备把输入的这一串数字转换成二进制数 mov bl,10 @@Mul_Ten: lodsb cbw add ax,dx mul bl mov dx,ax loop @@Mul_Ten lodsb cbw add ax,dx @@Save_Ret: pop di stosb pop bx pop cx pop dx ret @@Save_Tmp db 16 dup(?) Input_Digit EndP ; ----------------------------------------- ; 功能:把AL中的二进制无符号数转换成显式的十进制ASCII ; 入口:AL=二进制数;di=转换后的ASCII保存地址 ; 出口:无 Dec_ASCII Proc Near push si push cx push bx push di mov bl,10 xor cx,cx lea di,@@Temp_Save cld @@Divide: xor ah,ah div bl or ah,30h mov ,ah dec di inc cx test al,0ffh jnz @@Divide push di pop si inc si pop di pop bx push di rep movsb pop di pop cx pop si ret @@Temp_Save db 4 dup(?) Dec_ASCII EndP ; ----------------------------------------- Teachers equ 7 ;评委人数 N equ 2 ;评委打分位数 Grades db Teachers dup(?) ;7位评委给出的分数 Most_Grade dw ? ;最高分 Least_Grade dw ? ;最低分 PromptStr DB ’Please input ’,Teachers or 30h,’ grades: $’ Max_One db ’The maximum grade: ’ Most_Str db 4 dup(’$’) Mix_One db ’The miximum grade: ’ Least_Str db 4 dup(’$’) Last_Grade db ’The last everage grade: ’ Last_Str db 4 dup(’$’) Start: push cs pop ds push cs pop es ;使数据段、附加段与代码段同段 ; 7个评委分别给出10~20之间的整数分 Output PromptStr ;提示评委亮分 lea di,Grades ;分数存放地址 mov cx,Teachers ;评委数 push cx push di Input_Number: call enter_CTLF ;输出一个回车、换行 call Input_Digit ;从键盘输入一位评委的打分 loop Input_Number ;下一个评委的打分 pop si pop cx dec cx lodsb mov ah,al ;ah=最低分,al=最高分 Compare: cmp ah, ;当前最低分与当前分比较 jbe $+4 ;若低于或等于,转去比较最高分 mov ah, ;当前最低分高于当前分,保存新的最低分 cmp al, ;当前最高分与当前分比较 jae $+5 ;若高于或等于,转去与下一个分数比较 lodsb ;当前最高分低于当前分,保存新的最高分 jmp $+3 ;转去与下一个分数比较 inc si ;数组下标增1 loop Compare ;循环 mov byte ptr Most_Grade,al ;保存最高分 mov byte ptr Least_Grade,ah ;保存最低分 call enter_CTLF ;输出一个回车、换行 call enter_CTLF ;输出一个回车、换行 call enter_CTLF lea di,Most_Str call Dec_ASCII ;把最高分转换成ASCII码 Output Max_One ;显示一个最高分 call enter_CTLF ;输出一个回车、换行 lea di,Least_Str mov al,byte ptr Least_Grade ;取最低分 call Dec_ASCII ;把最低分转换成ASCII码 Output Mix_One ;显示一个最低分 call enter_CTLF ;输出一个回车、换行 call enter_CTLF lea si,Grades ;分数存放地址 mov cx,Teachers-1 ;评委数-1 xor ah,ah lodsb mov dx,ax ;总分初值 Addition: lodsb add dx,ax ;累加各评委分数 loop Addition ; 去掉一个最高分和最低分 sub dx,Most_Grade ;去掉一个最高分 sub dx,Least_Grade ;去掉一个最低分 ; 剩余5个求平均分 mov ax,dx mov bx,Teachers-2 div bl ;平均分取整数部分 ; 最后得分以十进制输出显示在屏幕 lea di,Last_Str call Dec_ASCII ;把平均分转换成ASCII码 Output Last_Grade ;显示平均分 Exit_Proc: mov ah,4ch ;结束程序 int 21h Code ENDS END Start ;编译到此结束 2、设-8《=A《=8,-12《=B《=12,-15《=C《=15 求出A+B+C=0的全部解 给定条件的三个变量,共有13175个组合,满足A+B+C=0的有400个。 ; 本程序通过编译,运行正确 Code Segment Assume CS:Code,DS:Code ; ----------------------------------------- ; 功能:显示指定地址(Str_Addr)的字符串 ; 入口: ; Str_Addr=字符串地址(要求在数据段) ; 用法: Output Str_Addr ; 用法举例:Output PromptStr Output MACRO Str_Addr lea dx,Str_Addr mov ah,9 int 21h EndM ; ----------------------------------------- ; 功能:把AL中的二进制有符号数转换成显式的十进制ASCII码 ; 入口:AL=二进制数;di=转换后的ASCII保存地址 ; 出口:无 Dec_ASCII Proc Near push si push cx push bx push di mov bl,10 xor cx,cx lea di,@@Temp_Save cld push ax test al,80h jz @@Divide neg al @@Divide: xor ah,ah div bl or ah,30h mov ,ah dec di inc cx test al,0ffh jnz @@Divide pop ax mov byte ptr ,’ ’ test al,80h jz $+5 mov byte ptr ,’-’ dec di inc cx push di pop si inc si pop di pop bx push di rep movsb pop di pop cx pop si ret @@Temp_Save db 4 dup(?) Dec_ASCII EndP ; ----------------------------------------- ; 功能:向指定的内存地址写3个空格 ; 入口:di=指定的内存地址 ; 出口:无 Out_Space Proc Near push di push cx push ax mov al,20h mov cx,3 cld rep stosb pop ax pop cx pop di ret Out_Space EndP ; ----------------------------------------- A0 equ -8 ;变量A初值 B0 equ -12 ;变量B初值 C0 equ -15 ;变量C初值 ABC_Number db 3 dup(?) Count dw 0 ;A+B+C=0的全部解计数 PromptStr DB ’A+B+C=0’,13,10,13,10,’$’ Sum_Zero db ’A=’ A_Number db 3 dup(20h) db ’, B=’ B_Number db 3 dup(20h) db ’, C=’ C_Number db 3 dup(20h),13,10,’$’ ; 设-8《=A《=8,-12《=B《=12,-15《=C《=15,求出A+B+C=0的全部解 Start: push cs pop ds push cs pop es ;使数据段、附加段与代码段同段 Output PromptStr lea si,ABC_Number mov cx,17 mov byte ptr ,A0 A_Var: push cx mov cx,25 mov byte ptr ,B0 B_Var: push cx mov cx,31 mov byte ptr ,C0 C_Var: push cx mov al, add al, adc al, cmp al,0 jnz Next_One lea di,A_Number call Out_Space mov al, call Dec_ASCII ;把变量A的值转换成显式的十进制ASCII码 lea di,B_Number call Out_Space mov al, call Dec_ASCII ;把变量B的值转换成显式的十进制ASCII码 lea di,C_Number call Out_Space mov al, call Dec_ASCII ;把变量C的值转换成显式的十进制ASCII码 Output Sum_Zero inc Count ;计数 Next_One: inc byte ptr pop cx loop C_Var pop cx inc byte ptr loop B_Var pop cx inc byte ptr loop A_Var Exit_Proc: mov ah,4ch ;结束程序 int 21h Code ENDS END Start ;编译到此结束

汇编语言中proc far是什么意思

proc far--段间调用子程序的首部,调用时使用20位的组合物理地址,也称为远调用proc near--段内调用子程序的首部,调用时仅使用16位的段内偏移地址,也称近调用

OK,关于汇编语言proc near和汇编语言小题一个,感激不尽的内容到此结束了,希望对大家有所帮助。

汇编语言proc near(汇编语言小题一个,感激不尽)

本文编辑:admin
下一篇:没有内容了

本文相关文章:


汇编语言proc near(用汇编语言编下列两题,高分!急求!!)

汇编语言proc near(用汇编语言编下列两题,高分!急求!!)

本文目录用汇编语言编下列两题,高分!急求!!微机原理题:汇编语言编写的子程序中最后一条汇编语句是什么NEAR的汇编语言汇编语言的 注释啊啊 ,追加的汇编语言中proc far是什么意思汇编语言小题一个,感激不尽用汇编语言编下列两题,高分!急

2024年7月24日 10:41

更多文章:


strcat怎么读(严厉的英语strict怎么读)

strcat怎么读(严厉的英语strict怎么读)

本文目录严厉的英语strict怎么读strict怎么读英语单词strict怎么读一个简单的问题:C++用到fstream把txt文档读进来怎么读strict中文怎么读音请问strlen strcmp strcpy怎么读;来自C语言!关于st

2024年7月4日 22:13

verilog条件编译(Verilog数字系统设计教程的作品目录)

verilog条件编译(Verilog数字系统设计教程的作品目录)

各位老铁们,大家好,今天由我来为大家分享verilog条件编译,以及Verilog数字系统设计教程的作品目录的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2024年10月21日 05:15

程序员后端开发是做什么的(程序员前端和后端区别)

程序员后端开发是做什么的(程序员前端和后端区别)

本文目录程序员前端和后端区别java后端开发是纯程序员吗前端和后端程序员的区别是什么后端开发程序员究竟做什么前端和后端的工作内容有什么区别呢程序员前端和后端区别程序员前端和后端是一起完成程序开发,但是分为两个层面的技术进行更细化和分工合作:

2024年7月23日 06:08

nodejs是什么前端用来能干什么(nodejs有什么用)

nodejs是什么前端用来能干什么(nodejs有什么用)

本篇文章给大家谈谈nodejs是什么前端用来能干什么,以及nodejs有什么用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录nodejs有

2024年7月23日 15:50

spring怎么读取xml文件(如何使用spring解析xml文件)

spring怎么读取xml文件(如何使用spring解析xml文件)

大家好,关于spring怎么读取xml文件很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何使用spring解析xml文件的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各

2024年9月1日 15:15

wordpress登录地址(wordpress后台登陆地址修改哪个文件夹)

wordpress登录地址(wordpress后台登陆地址修改哪个文件夹)

本文目录wordpress后台登陆地址修改哪个文件夹怎么修改WordPress后台登录地址怎么找到wordpress的后台登陆界面本地用XAMPP安装wordpress,无法登入http://localhost/wordpress页面,数据

2024年6月10日 04:57

access开发软件步骤(access如何开发软件)

access开发软件步骤(access如何开发软件)

这篇文章给大家聊聊关于access开发软件步骤,以及access如何开发软件对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录access如何开发软件能用access做出一个软件吗怎么做如何用access开发应用_access能

2024年9月27日 03:42

security造句(保安造句是什么)

security造句(保安造句是什么)

本文目录保安造句是什么护卫的英文安全的造句安全的造句是什么用stronger造句kant air base造句 kant air baseの例文airport造句security的意思及相应词组和造句是公安的造句公安的造句是什么帮忙用给定词

2024年6月28日 13:40

context翻译(context词性变化)

context翻译(context词性变化)

本文目录context词性变化context analysis是什么意思in their broad contextcontext倒底有多少翻译方法java 上下文context 怎么理解context词性变化形容词:contextual。

2024年6月24日 19:05

bold type(type的用法和短语例句是什么意思)

bold type(type的用法和短语例句是什么意思)

其实bold type的问题并不复杂,但是又很多的朋友都不太了解type的用法和短语例句是什么意思,因此呢,今天小编就来为大家分享bold type的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录type的用法和

2024年9月29日 17:15

民退国进基调已定(国退民进的背景资料)

民退国进基调已定(国退民进的背景资料)

本文目录国退民进的背景资料如何理解“国退民进”他对中国的社会变革有什么意义如何理解“国退民进“国退民进的背景资料证券市场上“国退民进”发轫于1994年,始作俑者为恒通协议受让棱光国家股以及浙江凤凰国家股转让于康恩贝集团。1996年国家股或法

2024年6月9日 16:15

外地来绵阳疫情防控要求绵阳疫情防控措施?2020中国(绵阳)科技城国际科技博览会时间和地点中国(绵阳)科技城国际科技博览会活动安排

外地来绵阳疫情防控要求绵阳疫情防控措施?2020中国(绵阳)科技城国际科技博览会时间和地点中国(绵阳)科技城国际科技博览会活动安排

本文目录外地来绵阳疫情防控要求绵阳疫情防控措施2020中国(绵阳)科技城国际科技博览会时间和地点中国(绵阳)科技城国际科技博览会活动安排第十届绵阳科博会主要活动计划安排表一览现在老北川遗址留下了原北川中学吗外地来绵阳疫情防控要求绵阳疫情防控

2024年6月29日 14:58

函数依赖是什么(部分函数依赖是什么意思)

函数依赖是什么(部分函数依赖是什么意思)

本文目录部分函数依赖是什么意思数据库问题:什么是函数依赖的逻辑蕴含函数依赖与多值依赖的关系是什么如何写出函数依赖、判断范式级别数据库问题:什么是多值函数依赖“函数依赖”怎么理解数据库问题:什么是非平凡函数依赖什么是依赖关系什么是函数关系什么

2024年5月25日 10:31

mysql 文档(急!!Linux下MySQL导入txt文档的问题!!)

mysql 文档(急!!Linux下MySQL导入txt文档的问题!!)

大家好,mysql 文档相信很多的网友都不是很明白,包括急!!Linux下MySQL导入txt文档的问题!!也是一样,不过没有关系,接下来就来为大家分享关于mysql 文档和急!!Linux下MySQL导入txt文档的问题!!的一些知识点,

2024年8月24日 17:35

零基础excel实用操作技巧(excel表格操作技巧有哪些)

零基础excel实用操作技巧(excel表格操作技巧有哪些)

本文目录excel表格操作技巧有哪些新手必会的Excel小技巧有哪些如何将excel 初学者必备的excel操作技巧excel表格操作技巧有哪些(1) 分数的输入 如果直接输入“1/5”,系统会将其变为“1月5日”,解决办法是:先输入“0”

2024年7月14日 14:44

alternative rock(Alternative是什么风格介绍一下~)

alternative rock(Alternative是什么风格介绍一下~)

本文目录Alternative是什么风格介绍一下~alternative音乐类型另类摇滚(Alternative Rock)的精确定义是什么Alternative是什么风格介绍一下~Alternative 亦可解作“另类”。另类摇滚 风格起

2024年6月29日 05:20

vlookup公式不出数值(excel中vlookup怎么不显示数据)

vlookup公式不出数值(excel中vlookup怎么不显示数据)

其实vlookup公式不出数值的问题并不复杂,但是又很多的朋友都不太了解excel中vlookup怎么不显示数据,因此呢,今天小编就来为大家分享vlookup公式不出数值的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本

2024年10月6日 14:50

html中的fieldset(求Html语言中的fieldset标签用法,还有请教为什么fieldset不怎么常用)

html中的fieldset(求Html语言中的fieldset标签用法,还有请教为什么fieldset不怎么常用)

本文目录求Html语言中的fieldset标签用法,还有请教为什么fieldset不怎么常用HTML中的fieldset标签有问html 的fieldset 问题HTML中的fieldset有什麼用啊html5中怎么设置fieldset居中

2024年7月21日 23:26

mysql insert into数据很慢(mysql数据库插入数据很慢,咋回事)

mysql insert into数据很慢(mysql数据库插入数据很慢,咋回事)

本文目录mysql数据库插入数据很慢,咋回事为什么我的mysql导入sql文件很慢,3000多条的insert语句都要5分钟,我朋友电脑却不超在mysql数据库中直接执行insert操作,消耗时间超过50ms怎么回事在MySQL 中,哪些原

2024年7月20日 08:02

c++开发工具有哪些(现在编写C++程序用什么开发工具)

c++开发工具有哪些(现在编写C++程序用什么开发工具)

本文目录现在编写C++程序用什么开发工具有什么好用的windows上的c++程序开发工具吗C++有几种,是不是有微软的,还有borland c++和c++ builder还有没有别的,哪些是淘汰了的现在C++一般用什么开发工具现在编写C++

2024年7月6日 18:41

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1736
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1168
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索